【问题标题】:Possible Memory leak through FinalizerReference可能通过 FinalizerReference 泄漏内存
【发布时间】:2016-02-13 11:29:16
【问题描述】:

我有一个小的 android 应用程序,我尝试查找内存泄漏,所以我单击了“Dump Java Heap”,列表中的第一个类是 FinalizerReference (java.lang.ref)。它有超过 500 个实例,每个实例都有一个“下一个”和“上一个”到另一个 FinalizerReference。

我知道 FinalizerReference 来自实现 Object.finalize() 的对象,但我的应用程序中没有实现它的对象。我怎样才能找出为什么会发生这种泄漏并修复它?

【问题讨论】:

  • 您是否遇到了 OutOfMemoryErrors,或者您只是怀疑可能由于 FinalizerReference 实例而导致内存泄漏?
  • @1615903 只是怀疑..
  • @EJP 这是一种奇怪的方法。不要测试您的应用程序是否存在潜在的内存泄漏。
  • @amitooshacham 你发现问题了吗?我正面临着确切的问题!

标签: java android memory-leaks


【解决方案1】:

有关您的问题的更多详细信息,请查看您的Finalizerreferent 字段。 终结器对象只是扩展了References,因此您可以调查内容。它将为您提供有关最终确定对象的信息。

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

干杯

【讨论】:

    【解决方案2】:

    您的应用中可能没有涉及 FinalizerReference 的内存泄漏,尽管 Android Memory Profiler 看起来确实存在。

    我的investigation 类似的顾虑让我确信 Profiler 在 FinalizerReference 的情况下对相同的少量内存执行大量多次计数,因此 Retained Memory 的报告值是没有意义的,有时甚至是ludicrous

    在您的情况下,~38kB Shallow Size 很重要,但很小,而 ~40 MB Retained Memory 应该被忽略。

    【讨论】:

      猜你喜欢
      • 2018-08-27
      • 2011-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-19
      • 2020-01-23
      相关资源
      最近更新 更多