Android Studio HPROF 参考树元素颜色代表什么?

What do the Android Studio HPROF reference tree element colours represent?

谁能告诉我 Android Studio 中 HPROF Viewer 中粗体、蓝色一和红色一的位置到底是什么意思?

我在 Reference Tree 面板中询问了一个。

此致。

  • this[=10=](红色的)- 是保存对 LeakActivity 的引用的变量。在您的情况下,这是对封闭 class 的隐式引用。这是 Java 中匿名内部 classes 的性质 - 它们隐含地持有对外部(封闭)class.

  • 的引用
  • 蓝色 class 名称 - 只是 this[=10=] 变量的位置。

所以基本上你所看到的是 LeakActivity 是从 LeakAsyncTask 隐式引用的,它在 LeakActivity 中作为匿名内部 class 实现,所以 LeakActivityLeakAsyncTask 完成之前不能被垃圾回收。所以你有一个潜在的 Activity 泄漏,这对你的应用来说真的很危险

我找不到关于此的任何文档,但通过查看一些堆转储,它们似乎是这样的:

  • blue - 在右上窗格中选择的最接近 dominator 的实例。
  • bold - GC 根,例如深度为 0 的实例 不应 被收集。 This answer has more information on what a GC root is, and this answer 列出作为根的事物的类型。
  • red - 我还没有真正看到这些,但我猜它表示一个实例应该被垃圾收集,但还没有被收集。

再次声明,这里有一个免责声明,这可能都是错误的,我实际上找不到任何关于这个的官方信息,但它似乎与我在使用堆分析器时的观察相符。