What Do The Android Studio Hprof Reference Tree Element Colours Represent?
Solution 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.
Solution 2:
this$0
(the red one) - is the variable which holds the reference toLeakActivity
. 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
Post a Comment for "What Do The Android Studio Hprof Reference Tree Element Colours Represent?"