java - 空 LibGdx 游戏循环泄漏内存

标签 java windows eclipse memory-leaks libgdx

我正在调试我使用 libGdx 库和 eclipse 编写的游戏。我有一个巨大的内存泄漏,所以我在我的渲染循环中注释掉了行,直到我在那里什么都没有。但是应用程序的内存仍然在上升。我最终使用 GTX 设置 UI 创建了一个全新的项目。当我启动它时,发生了完全相同的事情。它仍在以大约 100 万的速度上升。每秒 4 KB。不多,但就是停不下来。在查看堆数据时,我看到有 com.badlogic.gdx.backends.lwjgl.LwjglInput 可能是它的原因。但是我什至不知道我是否应该改变一些东西,当这个“问题”甚至出现在由 GTX 设置 UI 创建的项目中时。这对于应用程序来说是正常的吗?我一直等到它从 34'800K 上升到 40'000K,所以它可能永远不会停止。这最终会导致 OutOfMemory 异常吗? (顺便说一句。我使用 Windows 任务管理器来获取 RAM 值。而且我使用的是 Eclipse)

最佳答案

不一定是内存泄漏。垃圾收集器何时被触发可能是非常随机的,有时很长一段时间都不会发生。特别是如果只有 4kb/s 被分配。 GC 的触发还取决于您运行的 JVM。Android 上的 Dalvik 可能会更早触发它。

当你自己尝试时,调用 System.gc() 自己触发 GC 证明它不是内存泄漏,而只是一个懒惰的垃圾收集器。

在桌面上(LWJGL 后端意味着仅桌面)这不是很重要,因为您不会感觉到垃圾收集器。在移动后端,我希望 libgdx 开发人员对新实例更加小心,这意味着他们可能会比在其他后端更多地使用池,以尽可能避免垃圾收集器。

关于java - 空 LibGdx 游戏循环泄漏内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20976483/

相关文章:

java - 使用 JIRA、Ivy 和 SVN 时报告版本更改

windows - Windows 的同步文件系统命令

c# - 在代码中获取版本号.Net Core 3 WPF Sideload

python - 有没有办法让 Python 控制台应用程序在 Windows 的任务栏中闪烁?

android - 使用ADT和SDK管理器,将android源代码附加到eclipse

android - eclipse中更新ADT后出错

JavaScript 和 Json : Excluding Fields From Serialization and Deserialization

Java Eclipse 构建路径

c - 在 C 中找到函数的第一个转折点

java - 使用多模块 Maven 项目时 Eclipse 的类路径问题