Cómo escuchar eventos de GC en Android
¿De todos modos podemos monitorear eventos de GC como sucede en Android?
En Java, creo que podemos escuchar los eventos http://www.fasterj.com/articles/gcnotifs.shtml Pero las API de java.lang.management no están disponibles en Android.
- Consideraciones del GC de Android: ¿cuándo se ejecuta el GC y se puede rastrear su estado de ejecución desde el código?
- Creación de perfiles y optimización de un juego Android
- En una aplicación React Native JavaScript, ¿por qué cambiaría el comportamiento de Android GC si creaba una variable temporal en lugar de devolver un valor directamente?
- Detalles técnicos de Android Garbage Collector
- ¿Cómo puedo evitar los retrasos de recolección de basura en juegos Java? (Mejores Prácticas)
- El recolector de basura de Android trabaja duro en mi aplicación
- ¿Está creando lo siguiente para loop bad para Garbage Collection?
- Posibilidad de pérdida de memoria no controlada
- Lona: intentando usar un mapa de bits reciclado android.graphics.Bitmap
- Problemas con la recolección de basura y Picasso
- Recolector de basura en Android
- Memoria liberada del colector de basura de Android
- Cómo solucionar java.lang.OutOfMemoryError: Límite de sobrecarga de GC excedido error en android studio
Por qué quieres este oyente. Si simplemente desea saber si su aplicación se está quedando sin memoria, compruebe lo siguiente:
Liberar memoria a medida que la memoria se vuelve apretada
Durante cualquier etapa del ciclo de vida de la aplicación, la devolución de llamada onTrimMemory () también le indica cuándo la memoria general del dispositivo está baja. Debería responder liberando recursos adicionales basándose en los siguientes niveles de memoria suministrados por onTrimMemory ():
- TRIM_MEMORY_RUNNING_MODERATE Su aplicación se ejecuta y no se considera eliminable, pero el dispositivo tiene poca memoria y el sistema está matando activamente los procesos en la caché LRU.
- TRIM_MEMORY_RUNNING_LOW Su aplicación se está ejecutando y no se considera eliminable, pero el dispositivo se está ejecutando mucho más bajo en la memoria, por lo que debe liberar los recursos no utilizados para mejorar el rendimiento del sistema (lo que afecta directamente al rendimiento de la aplicación).
-
TRIM_MEMORY_RUNNING_CRITICAL Tu aplicación sigue en ejecución, pero el sistema ya ha eliminado la mayoría de los procesos en la caché LRU, por lo que deberías liberar todos los recursos no críticos ahora. Si el sistema no puede recuperar suficientes cantidades de RAM, borrará todo el caché LRU y comenzará a matar los procesos que el sistema prefiere mantener vivos, como los que alojan un servicio en ejecución. Además, cuando su proceso de aplicación está en caché, puede recibir uno de los siguientes niveles de onTrimMemory ():
-
TRIM_MEMORY_BACKGROUND El sistema tiene poca memoria y su proceso está cerca del principio de la lista LRU. Aunque el proceso de la aplicación no corra un alto riesgo de morir, es posible que el sistema ya esté destruyendo procesos en la caché LRU. Debe liberar recursos que sean fáciles de recuperar para que su proceso permanezca en la lista y se reanude rápidamente cuando el usuario regrese a su aplicación.
- TRIM_MEMORY_MODERATE El sistema tiene poca memoria y su proceso está cerca de la mitad de la lista LRU. Si el sistema se vuelve más restringido por la memoria, existe la posibilidad de que su proceso sea destruido.
- TRIM_MEMORY_COMPLETE El sistema tiene poca memoria y su proceso es uno de los primeros en ser eliminado si el sistema no recupera memoria ahora. Debe liberar todo lo que no es crítico para reanudar el estado de la aplicación. Debido a que la devolución de llamada onTrimMemory () se agregó en el nivel 14 de API, puede utilizar la devolución de llamada onLowMemory () como una alternativa para versiones anteriores, que es aproximadamente equivalente al evento TRIM_MEMORY_COMPLETE.
Aquí está el enlace de referencia https://developer.android.com/training/articles/memory.html
Bueno, será diferente para ambos dalvik y arte ..
Básicamente se puede instruir adb shell para grabar los eventos GC en un archivo de rastreo ..
Arte: https://source.android.com/devices/tech/dalvik/gc-debug.html
Podría incluso ser los mismos comandos adb para el arte y dalvik.
La herramienta de monitoreo de memoria se conecta a esto cuando muestra ese gráfico gráfico de memoria para usted en android studio.
Progammatically, probablemente es más difícil .. mirar cómo FB hizo sus herramientas de rendimiento como creo que están haciendo los conteos de eventos de GC desde el lado nativo de C / C ++ y la clasificación en un flatbuffer para su código de herramienta de perfil de perfil de Java para acceder ..
- La aplicación de Amazon Marketplace rechazada por contener el archivo de configuración de Eclipse
- Aplicaciones Android y Android de etiqueta blanca