Registros de Android 'GC_EXTERNAL_ALLOC' 'GC_FOR_MALLOC'
Mientras ejecuto mis aplicaciones, tengo este tipo de registros:
GC_EXTERNAL_ALLOC liberado 2K, 38% libre 8772K / 14087K, externo 17480K / 17998K, pausado 87ms
GC_FOR_MALLOC liberado 0K, 38% libre 8772K / 14087K, externo 17480K / 17998K, pausado 67ms
GC_CONCURRENT liberado 2125K, 47% libre 6214K / 11719K, externo 7142K / 8400K, pausado 3ms + 5ms
- Registro personalizado para la aplicación de Android
- Inicio de sesión en bibliotecas de "código de biblioteca Java" para aplicaciones de Android
- ¿Cómo suprimir el registro con Google Analytics 7.3?
- Android ¿dónde está el registro para el archivo para la aplicación en el dispositivo?
- ¿Cómo registrar un int en Android?
¿Alguien sabe lo que significan estos registros? ¡Gracias por adelantado!
- ¿Cuál es la diferencia entre 'GC_EXTERNAL_ALLOC', 'GC_FOR_MALLOC' y 'GC_CONCURRENT'. ¿Hay algún otro evento 'GC'?
- ¿Qué significa "38% libre 8772K / 14087K"? ¿Qué es '8772K' y qué es '14087K'?
- ¿Qué significa 'externo 17480K / 17998K'? ¿Qué es '17480K' y qué es el '17998K'?
¡Gracias!
- No Commons Iniciar sesión en Android?
- Cómo ver los troncos de Slog
- Redireccionar Salida de registro a sdcard en el teléfono del cliente
- Android Studios no entiende la función de registro
- ¿Cómo guarda un registro de aplicación de Android en un archivo de un dispositivo físico?
- Registro de errores de lectura de Android desde el teléfono
- App: el tema ya está obsoleto. Pase por usar android: tema en su lugar
- Escribir datos de logcat de android en un archivo
Otro lugar donde se explican los mensajes de los recolectores de basura de Dalvik se encuentra en este video: Google I / O 2011: administración de memoria para aplicaciones de Android
A los 14 minutos de la presentación, rompe el formato del mensaje. (BTW, que el vídeo tiene información muy buena en la depuración de fugas de memoria)
A grandes rasgos, el formato es [Reason] [Amount Freed], [Heap Statistics], [External Memory Statistics], [Pause Time]
Razón
Viktor / Robert ya explicó GC_CONCURRENT
, GC_FOR_MALLOC
, GC_EXTERNAL_ALLOC
.
También hay:
-
GC_HPROF_DUMP_HEAP
– Si descarga el montón haciendo clic en el botón "dump heap" de DDMS o programaticamente -
GC_EXPLICIT
– si llama a System.gc ()
Cantidad liberada
Por ejemplo, freed 2125K
Autoexplicativo
Estadísticas del montón
Ejemplo: 47% free 6214K/11719K
Estos números reflejan las condiciones después de que el GC corrió. El "47% libre" y 6214K reflejan el uso actual del montón. El 11719K representa el tamaño de montón total. Por lo que puedo decir, el montón puede crecer / reducir, por lo que no necesariamente tendrá un OutOfMemoryError si llegas a este límite.
Estadísticas de memoria externa
Ejemplo: external 7142K/8400K
Nota: Esto sólo puede existir en las versiones anteriores a Honeycomb de Android (pre 3.0).
Antes de Honeycomb, los mapas de bits se asignan externamente a su VM (por ejemplo, Bitmap.createBitmap () asigna el mapa de bits externamente y sólo asigna unas pocas docenas de bytes en su montón local). Otros ejemplos de asignaciones externas son para java.nio.ByteBuffers.
Tiempo de pausa
Si se trata de un evento de GC concurrente, habrá dos veces en la lista. Una es para una pausa antes de la GC, una es para una pausa cuando el GC se hace en su mayoría. Por ejemplo, paused 3ms+5ms
Para los eventos GC no concurrentes, sólo hay un tiempo de pausa y normalmente es mucho mayor. Por ejemplo paused 87ms
También estaba buscando esta información.
GC significa recolector de basura, que recoge objetos no utilizados durante el tiempo de ejecución de la aplicación.
-
- GC_EXTERNAL_ALLOC : Significa que la máquina virtual está intentando reducir la cantidad de memoria que se ha utilizado objetos de colección, para dar cabida a objetos no coleccionables.
- GC_FOR_MALLOC : significa que el GC se activó porque no había suficiente memoria en el montón para realizar una asignación. Puede ser activado cuando se están creando nuevos objetos.
- GC_CONCURRENT : Se activa cuando el montón ha alcanzado una cierta cantidad de objetos para recopilar.
- Estoy adivinando que el 38% libre significa que el 38% de la pila no se utiliza. 8772K sería el tamaño de la memoria utilizada en el montón y 14087K sería el tamaño del montón.
- No lo sé, lo siento.
Tenga en cuenta que toda esta información se basa en un mensaje de Robert en una pregunta similar publicada aquí en stackoverflow. Todo el crédito (siempre y cuando esto sea correcto) va a Robert.
- Cómo obtener DrawerLayout para deslizarse sobre la barra ActionBar
- La conversión al formato de Dalvik falló con error 1 con javax / net / SocketFactory.class