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

走远了吗. 提交于 2019-12-03 11:16:54

问题


Can someone tell me what does bold, blue one and red one positions in HPROF Viewer in Android Studio means exactly ?

I ask about one in Reference Tree panel.

Best regards.


回答1:


I can't find any documentation on this, but from looking through a few heap dumps this is what they seem to be:

  • blue - The closest dominator of the instance selected in the top-right pane.
  • bold - A GC root, eg an instance with depth 0 that should not be collected. This answer has more information on what a GC root is, and this answer lists the types of things that are roots.
  • red - I haven't actually seen these, but I would guess it indicates an instance that should be garbage collected, but hasn't been yet.

Again, a disclaimer here is that this could all be wrong and I can't actually find any official information about this, but it does seem to match up with my observations when using the heap profiler.




回答2:


  • this$0 (the red one) - is the variable which holds the reference to LeakActivity. In your case this is an implicit reference to the enclosing class. This is a nature of anonymous inner classes in Java - they implicitly hold a reference to the outer (enclosing) class.

  • blue class name - is just a location of this$0 variable.

So essentially what you are seeing - is LeakActivity is implicitly referenced from LeakAsyncTask which is implemented as anonymous inner class within LeakActivity, so LeakActivity cannot be garbage collected until LeakAsyncTask is finished. So you have a potential Activity leak which is really dangerous for your app



来源:https://stackoverflow.com/questions/35674959/what-do-the-android-studio-hprof-reference-tree-element-colours-represent

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!