Encontrar fugas requiere una buena comprensión de cómo funciona GC. Requiere diligencia en la redacción del código y la revisión del código. Pero en Android, hay algunas buenas herramientas que pueden ayudarlo a identificar posibles fugas o asegurarse de que haya una fuga cuando algún código parezca sospechoso.
1. fugas canario from Square es una buena herramienta para detectar pérdidas de memoria en su aplicación. Crea referencias débiles a actividades en su aplicación. (También puede personalizarlo agregando relojes a cualquier otro objeto). Luego verifica si la referencia se borra después de GC. De lo contrario, volca el montón en un archivo .hprof y lo analiza para confirmar si hay una fuga. Si hay una, muestra una notificación y en una aplicación separada, muestra el árbol de referencia de cómo ocurre la fuga. Puede encontrar más información sobre Leak Canary en este artículo: LeakCanary: detecte todas las pérdidas de memoria . Le recomiendo que instale Leak Canary en su desarrollador / versión de prueba. Ayuda a los desarrolladores y al control de calidad a encontrar pérdidas de memoria antes de que su aplicación llegue a las manos de sus usuarios.
- ¿Es Android Studio mejor que Android SDK?
- Soy principiante avanzado en PHP y Python pero nuevo en Java + Spring. ¿Debo comenzar con Java si creo que mi aplicación web solo se convertirá en aplicaciones de Android e iOS?
- Ruby (lenguaje de programación): ¿Cuáles son las experiencias de las personas con Rhodes?
- ¿Qué tiene de diferente el proyecto Android One? ¿En qué se diferencian los teléfonos que funcionan con Android normal de estos?
- ¿Cuáles son algunos juegos gratuitos de Android sin conexión?
2. Android Studio tiene una herramienta útil para detectar pérdidas de memoria. Si sospecha que un fragmento de código en su aplicación podría filtrar una Actividad, puede hacerlo.
Paso 1: compile y ejecute la compilación de depuración en un dispositivo o emulador conectado a su computadora.
Paso 2: Vaya a la actividad sospechosa, luego regrese a la actividad anterior que mostrará la actividad sospechosa de la pila de tareas.
Paso 3: en Android Studio -> ventana de Android Monitor -> sección Memoria, haga clic en el botón Initiate GC
. Luego haga clic en el botón Dump Java Heap
.
Paso 4: Cuando se presiona el botón Dump Java Heap
, Android Studio abrirá el archivo .hprof
. En el visor de archivos hprof, hay un par de formas en que puede verificar la pérdida de memoria. Puede usar la Analyzer Tasks
del Analyzer Tasks
en la esquina superior derecha para detectar actividades filtradas automáticamente. O puede cambiar el modo de vista a Package Tree View
desde la esquina superior izquierda, encontrar la actividad que debe destruirse. Verifique el Total Count
del objeto de actividad. Si hay 1 o más instancias, significa que hay una fuga.
Paso 5: Una vez que encuentre la Actividad filtrada, verifique el árbol de referencia en la parte inferior y descubra qué objeto hace referencia a la actividad que debería haber estado muerta.
¿Cuáles son los patrones de fuga comunes?
Hay muchas formas en que puede causar una pérdida de memoria en Android. Para resumir, hay principalmente tres categorías.
- Fuga de actividad a una referencia estática
- Fuga de actividad a un subproceso de trabajo
- Hilo de fuga en sí
Adiós !!