可能通过FinalizerReference泄漏内存

时间:2015-11-12 07:37:57

标签: java android memory-leaks

我有一个小的Android应用程序,我尝试寻找内存泄漏,所以我点击'转储Java堆',列表中的第一个类是FinalizerReference(java.lang.ref)。它有超过500个实例,每个实例都有一个'next'和'prev'到另一个FinalizerReference。

我知道FinalizerReference来自实现Object.finalize()的对象,但我的应用程序中没有实现它的对象。我怎样才能找出泄漏发生的原因并解决它?

enter image description here

2 个答案:

答案 0 :(得分:5)

有关您的问题的详细信息,请查看Finalizer指示字段。 Finalizer对象只是扩展Reference,因此您可以调查内容。它将为您提供有关最终化对象的信息。

根据内容,您将获得新的潜在客户。待处理对象的完成过程可能很长。由于你只有一个线程处理所有这些,你可能会以某种方式最终确定。

干杯

答案 1 :(得分:0)

尽管Android Memory Profiler使它看起来像应用程序,但您的应用程序中可能没有涉及FinalizerReference的内存泄漏。

我对investigation的类似担忧使我确信,在FinalizerReference的情况下,Profiler会对相同少量的内存执行大量计数,因此,“保留内存”的报告值毫无意义,有时甚至是{{3 }}。

在您的情况下,〜38kB浅大小很重要,但很小,而应忽略〜40 MB的保留内存。