18

有人能告诉我 Android Studio 中 HPROF Viewer 中的粗体、蓝色一号和红色一号的确切含义是什么吗?

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

粗体项目

蓝色项目

红色项目

最好的祝福。

4

2 回答 2

13

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

  • blue-在右上角窗格中选择的实例的最接近的支配者。
  • bold- GC 根,例如不应收集的深度为 0 的实例这个答案有更多关于什么是 GC 根的信息,这个答案列出了作为根的事物的类型。
  • red- 我实际上还没有看到这些,但我猜它表示应该被垃圾收集的实例,但还没有。

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

于 2016-05-10T00:21:50.417 回答
3
  • this$0(红色的) - 是持有对 . 的引用的变量LeakActivity。在您的情况下,这是对封闭类的隐式引用。这是 Java 中匿名内部类的本质——它们隐含地持有对外部(封闭)类的引用。

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

所以本质上你所看到的 - isLeakActivity被隐式引用,LeakAsyncTask它被实现为内部的匿名内部类LeakActivity,所以在完成LeakActivity之前不能被垃圾收集LeakAsyncTask。所以你有一个潜在的 Activity 泄漏,这对你的应用程序来说真的很危险

于 2016-02-27T20:35:28.860 回答