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

时间:2016-02-27 20:18:43

标签: android android-studio heap-dump hprof

有人可以告诉我,Android Studio中的HPROF Viewer中的粗体,蓝色和红色位置究竟是什么意思?

我在“参考树”面板中询问一个。

Bold item

Blue item

Red item

最好的问候。

2 个答案:

答案 0 :(得分:13)

我无法找到相关的任何文档,但通过查看一些堆转储,这就是它们的样子:

  • blue - 在右上方窗格中选择的最接近的dominator实例。
  • bold - GC根,例如深度为0且的实例。 This answer提供了有关GC根目录的更多信息,this answer列出了根目录的类型。
  • red - 我还没有真正看到过这些,但我猜它会指出一个应该被垃圾收集的实例,但还没有。

同样,这里的免责声明是这可能都是错误的,我实际上找不到任何关于此的官方信息,但它确实与我在使用堆分析器时的观察结果相符。

答案 1 :(得分:3)

  • this$0(红色的) - 是保存LeakActivity引用的变量。在您的情况下,这是对封闭类的隐式引用。这是Java中匿名内部类的本质 - 它们隐含地包含对外部(封闭)类的引用。

  • 蓝色班级名称 - 只是this$0变量的位置。

基本上你所看到的是LeakActivity是从LeakAsyncTask隐式引用的,LeakActivityLeakActivity内被实现为匿名内部类,所以LeakAsyncTask不能被垃圾收集直到Frame已完成。因此,您的潜在活动泄漏对您的应用来说非常危险