Android垃圾收集器获取删除的对象名称

时间:2014-09-04 10:53:36

标签: java android garbage-collection

我最近修改了我的代码的一大块,垃圾收集器发疯了,我无法弄清楚它删除了什么。所以我想得到垃圾收集器删除的东西的名称。

我已经尝试了Android设备监视器,但我无法弄清楚在哪里或如何找到它或者它是否可能。

我该怎么做才能找出修改代码的位置?

2 个答案:

答案 0 :(得分:0)

finalize()

此API由Java提供,JVM会在对象即将通过GC时调用,但如果没有保证,如果它将按照JAVA DOC进行调用,则可以尝试在此处打印名称。

希望这能解决你的问题。

答案 1 :(得分:0)

(实际上,如果GC“疯了”,更可能的问题是它无法删除的对象比它删除的对象。)


首先,对象(通常)没有名称。

其次,我认为无法跟踪GC实际删除对象的时间。

因此跟踪对象删除不太可行......反正可能无济于事。


我认为你真正需要的是一个内存分析器工具(例如DDMS),它可以告诉你对象是否被分配,并且可以帮助你分析所有现场(可达)的对象和垃圾(无法到达)。

可能使GC使用大量时间(或“疯狂”)的两个最可能的事情是:

  • 拥有太多可访问的数据。随着堆接近满,尝试收集垃圾所花费的时间百分比急剧增加。导致数据过多的常见原因是应用程序存储泄漏。

  • 创建过多的临时对象。分配率越高意味着收集器必须更频繁地运行。

参考文献:

相关问题