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

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


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.


  • 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