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 实现,所以 LeakActivity
在 LeakAsyncTask
完成之前不能被垃圾回收。所以你有一个潜在的 Activity 泄漏,这对你的应用来说真的很危险
我找不到关于此的任何文档,但通过查看一些堆转储,它们似乎是这样的:
blue
- 在右上窗格中选择的最接近 dominator 的实例。
bold
- GC 根,例如深度为 0 的实例 不应 被收集。 This answer has more information on what a GC root is, and this answer 列出作为根的事物的类型。
red
- 我还没有真正看到这些,但我猜它表示一个实例应该被垃圾收集,但还没有被收集。
再次声明,这里有一个免责声明,这可能都是错误的,我实际上找不到任何关于这个的官方信息,但它似乎与我在使用堆分析器时的观察相符。
谁能告诉我 Android Studio 中 HPROF Viewer 中粗体、蓝色一和红色一的位置到底是什么意思?
我在 Reference Tree 面板中询问了一个。
此致。
this[=10=]
(红色的)- 是保存对LeakActivity
的引用的变量。在您的情况下,这是对封闭 class 的隐式引用。这是 Java 中匿名内部 classes 的性质 - 它们隐含地持有对外部(封闭)class. 的引用
蓝色 class 名称 - 只是
this[=10=]
变量的位置。
所以基本上你所看到的是 LeakActivity
是从 LeakAsyncTask
隐式引用的,它在 LeakActivity
中作为匿名内部 class 实现,所以 LeakActivity
在 LeakAsyncTask
完成之前不能被垃圾回收。所以你有一个潜在的 Activity 泄漏,这对你的应用来说真的很危险
我找不到关于此的任何文档,但通过查看一些堆转储,它们似乎是这样的:
blue
- 在右上窗格中选择的最接近 dominator 的实例。bold
- GC 根,例如深度为 0 的实例 不应 被收集。 This answer has more information on what a GC root is, and this answer 列出作为根的事物的类型。red
- 我还没有真正看到这些,但我猜它表示一个实例应该被垃圾收集,但还没有被收集。
再次声明,这里有一个免责声明,这可能都是错误的,我实际上找不到任何关于这个的官方信息,但它似乎与我在使用堆分析器时的观察相符。