答案 0 :(得分:13)
我无法找到相关的任何文档,但通过查看一些堆转储,这就是它们的样子:
blue
- 在右上方窗格中选择的最接近的dominator实例。bold
- GC根,例如深度为0且不的实例。 This answer提供了有关GC根目录的更多信息,this answer列出了根目录的类型。red
- 我还没有真正看到过这些,但我猜它会指出一个应该被垃圾收集的实例,但还没有。同样,这里的免责声明是这可能都是错误的,我实际上找不到任何关于此的官方信息,但它确实与我在使用堆分析器时的观察结果相符。
答案 1 :(得分:3)
this$0
(红色的) - 是保存LeakActivity
引用的变量。在您的情况下,这是对封闭类的隐式引用。这是Java中匿名内部类的本质 - 它们隐含地包含对外部(封闭)类的引用。
蓝色班级名称 - 只是this$0
变量的位置。
基本上你所看到的是LeakActivity
是从LeakAsyncTask
隐式引用的,LeakActivity
在LeakActivity
内被实现为匿名内部类,所以LeakAsyncTask
不能被垃圾收集直到Frame
已完成。因此,您的潜在活动泄漏对您的应用来说非常危险