2011-07-24 17 views
10

Tengo dos actividades: A y B. Comenzando en A, voy a la actividad B. Luego llamo a finish() en B y vuelvo a A. Cada vez que repito este proceso, la memoria asignada se incrementa en 0.1 MB.Rastreador de asignación: cómo usarlo para detectar fugas de memoria?

Así que quiero descubrir qué está causando esta fuga. Intenté usar el rastreador de asignación al rastrear la memoria asignada durante el proceso que acabo de mencionar. Luego, cuando presiono "Obtener asignaciones", obtengo una larga lista de asignaciones. Mi pregunta es: ¿cómo leo esa lista para averiguar qué está causando mi fuga?

He tratado de resolver esto liberando todos los recursos en el método onDestroy de la actividad B y eso me ayudó un poco. Y también, no estoy asignando nueva memoria en el método onResume de la actividad A.

sólo para mostrar que estoy usando rastreador de asignación correcta:

enter image description here

Respuesta

17

Debe pago y envío this video, se explica búsqueda de fuga de memoria en detalles y es simplemente genial :)

+0

Great link. Este es un gran seminario. – Phobos

+0

+1 para buena ... – NagarjunaReddy

+2

El video vinculado a (aunque es bueno) ni siquiera menciona el rastreador de asignación. – Wex

0

Creo que el Allocation Tracker es un registro de los elementos que se han asignado a la memoria (es decir, inicializado). No es una instantánea de los elementos actualmente en la memoria. Necesitas mirar al Heap por eso.