linearlayout - ¿Qué representan los colores del elemento de árbol de referencia HPROF de Android Studio?
No puedo encontrar ninguna documentación sobre esto, pero al mirar a través de unos cuantos vertederos, esto es lo que parecen ser:
-
blue
: el dominator más cercano de la instancia seleccionada en el panel superior derecho. -
bold
: una raíz de GC, por ejemplo, una instancia con profundidad 0 que no debe recopilarse. Esta respuesta tiene más información sobre qué es una raíz GC, y esta respuesta enumera los tipos de cosas que son raíces. -
red
: en realidad no he visto esto, pero supongo que indica una instancia que debería ser recogida de basura, pero que aún no ha sido.
Una vez más, un descargo de responsabilidad aquí es que todo esto podría estar mal y realmente no puedo encontrar ninguna información oficial sobre esto, pero parece coincidir con mis observaciones cuando uso el generador de perfiles de pila.
this$0
(el rojo) - es la variable que contiene la referencia aLeakActivity
. En su caso, esta es una referencia implícita a la clase adjunta. Esta es una naturaleza de las clases internas anónimas en Java: tienen de forma implícita una referencia a la clase externa (adjunta).nombre de clase azul: es solo una ubicación de
this$0
variable dethis$0
.
Básicamente, lo que está viendo es que LeakActivity
hace referencia implícitamente a LeakAsyncTask
que se implementa como clase interna anónima dentro de LeakActivity
, por lo que LeakActivity
no puede ser recogida de basura hasta que LeakAsyncTask
. Así que tienes una potencial fuga de actividad que es realmente peligrosa para tu aplicación