【发布时间】:2019-09-21 04:27:03
【问题描述】:
大师们,
我对 libGDX(以及一般的 Java 编程)比较陌生,并且对 libGDX 应用程序的 RAM 使用有疑问,但我无法在线找到答案。 几天前,当我从我目前正在阅读的“使用 LibGDX 的 Java 游戏开发”一书中定制一个游戏示例时,我注意到该游戏的 RAM 使用量在单独放置大约 1 小时时会飙升。我的 Linux 资源监视器从 ~120MB 开始,到我关闭它时达到了 1300MB。我已经就这件事联系了作者,因为我去他的书,一行一行的,仍然有这种行为!
除了他的示例中可能存在的泄漏之外,我决定更深入地挖掘并使用最新的 gdx-setup.jar (v. 1.9.9) 创建一个空的 LibGDX-App,并决定让它运行一段时间。 我使用 Ryzen 2700X、32GB RAM 和 Linux Mint 19.1 在我的工作站上对此进行了测试。 有趣的是,空的应用程序表现出类似但不那么激烈的行为,当我关闭时,RAM 使用率随着时间的推移从约 50MB 持续攀升至约 260MB,甚至没有一次下降! 我在网上看到资源监视器实际上并没有显示 java 进程中正在运行的游戏消耗了什么,而是混合了一些 JVM 的东西。所以我决定在 jConsole 和 VisualVW 的帮助下进一步分析。我怀疑是惰性 GC,但两个工具都显示 GC 定期运行。尽管如此,我的操作系统的资源监视器显示在空的 LibGdx-App 中这种不断攀升的 RAM 使用率,尽管它什么也没做,只是盯着我的脸,红色背景上令人讨厌的 Bad Logic-Smiley ;-)。
我已经在论坛和stackoverflow上对LibGDX的内存泄漏和RAM消耗进行了深入搜索,但找不到令人满意的答案。所以我想知道这种行为是否值得担心,或者这是否正常?如果是这样,即使是空的应用程序的 RAM 使用量也会不断攀升,那么人们怎么能检测到一切是否正常或应用程序是否泄漏内存呢? 如果你们中的一些 LibGDX 专家可以与像我这样的菜鸟分享您在这个主题上的智慧,我将不胜感激:-)
提前谢谢 - 代码艺术家
【问题讨论】:
-
让我们看看这个空的 libgdx 应用是什么样的
-
这只是使用 gdx-setup.jar 时创建的默认应用程序。没有添加,没有编辑......
标签: java memory-leaks libgdx garbage-collection