Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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.

like image 975
Pawel Urban Avatar asked Feb 27 '16 20:02

Pawel Urban


2 Answers

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.

like image 63
FuegoFro Avatar answered Nov 02 '22 15:11

FuegoFro


  • 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

like image 3
Pavel Dudka Avatar answered Nov 02 '22 16:11

Pavel Dudka