2012-04-08 51 views
2

我的android游戏中存在内存泄漏 - 我设法将其缩小到某个对象,该对象具有要在纹理上呈现的对象列表。这个对象在每次绘制的时候都会清除列表 - 所以我无法弄清楚它是如何获得列表中的数千个元素的。内存泄漏 - 调试器和内存分析器不同意

我在调试器中检查过,它没有所有这些成千上万的元素 - 通常约为2-20,这正是我所期望的......只有在渲染到纹理时,游戏才会逐渐减慢。

这里是内存分析器的显示6,111项的画面:

Memory Analyzer

下面是该调试器的图片2:

Debugger

谁能帮我找到了什么错误?

+0

你确定GC不只是坚持一段时间? – teh1 2012-04-08 20:40:18

+0

它可能是...我会尝试查看它是否在任何时候被清除 – Joe 2012-04-09 18:09:32

+0

@Joe,因为我对teh1的评论被说了,如果那些引用准备好被清除,他们将不会在默认的Eclipse MAT解析中显示。如果您遵循解析日志,您将在某个时候看到它将删除无法访问的对象。 – 2012-04-09 19:09:07

回答

1

它看起来像你可以调用System.gc();试图让垃圾收集器发挥其魔力。搏一搏。

+1

这不是假设OP在没有-keep_unreachable_objects的情况下运行解析。如果他没有那些引用不会出现。 System.gc()只会将标记的数据清理为GC – 2012-04-09 19:08:20

+0

那么你有它。 – teh1 2012-04-09 20:25:40