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

2.8k Views Asked by At

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.

Bold item

Blue item

Red item

Best regards.

2

There are 2 best solutions below

0
On BEST ANSWER

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
On
  • 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