【问题标题】:Java libgdx program not returning allocated MemoryJava libgdx 程序未返回分配的内存
【发布时间】:2014-01-30 14:55:56
【问题描述】:

我正在使用 libgdx 库在 java ( Eclipse ) 中运行一个程序。 现在我意识到当程序运行大约一分钟时 FPS 从稳定的 60 下降到从 10 到 40 的反弹。此外,程序分配的内存也在不断上升。但是堆大小似乎没有增加。

我现在的问题是为什么应用程序没有将分配的内存返回给操作系统 (windows),以及分配的内存和 FrameRate 之间是否存在相关性。

这里是从 jconsole 数据中提取的图片的链接:

http://de.tinypic.com/view.php?pic=jj9z6u&s=5#.UtFp9bSFd7s

(堆栈溢出让我无法直接上传图片...)

【问题讨论】:

  • 来自您的图片:25Mb 的内存并不是您所说的大量内存使用量。我会小心地得出内存使用是问题的结论。 Java 通常不会在占用内存后将内存返回给操作系统。即使它不再使用它。
  • 是的,但正如您所见,这只是堆......分配的内存上升到 1.5 GB......并且还在上升......

标签: java memory-management libgdx heap-memory


【解决方案1】:

您可能正在为垃圾收集器收集大量垃圾。

使用 Eclipse 或 ADT 中的堆分析工具来调试问题。有关想法,请参阅 http://android-developers.blogspot.com/2011/03/memory-analysis-for-android.html

【讨论】:

  • OP没有讲Android,libgdx有纯桌面实现。
  • 但是如果垃圾收集器会导致FrameRate下降,那不应该在GC激活的时候就下降吗?在 GC 日志中,它只是激活了 ca。全部 30 秒(这也可以在我假设的堆内存的下降中看到)
猜你喜欢
  • 2018-10-22
  • 1970-01-01
  • 1970-01-01
  • 2012-02-02
  • 2022-11-25
  • 2015-12-28
  • 2020-08-19
  • 1970-01-01
  • 2012-03-01
相关资源
最近更新 更多