Entendiendo los mensajes de memoria de salida Logcat [android]

Si testeaste tu aplicación alguna ves , seguramente notaste que en el la salida LogCat por eclipse aparecen mensajes como los siguientes

GC_EXPLICIT freed 6K, 41% free 2667K/6151K, external 0K/0K, paused 21ms

GC_CONCURRENT freed 378K, 41% free 3373K/6151K, external 0K/0K, paused 12ms+11ms

GC_CONCURRENT freed 379K, 42% free 3856K/6335K, external 0K/0K, paused 4ms+2ms

GC_CONCURRENT freed 434K, 32% free 2091K/6727K, external 0K/0K, paused 1ms+13ms

GC_EXPLICIT freed 244K, 42% free 3498K/6535K, external 0K/0K, paused 12ms

freed
Pero que significan estos mensajes? que nos esta tratando de decir android?

Estas lineas son parte del Garbage Collection (GC) que es un proceso de android, cada ves que el GC es disparado, nos muestra un mensaje por LogCat, que nos informa diferentes cosas que detallare en breve.Lo primero que observamos es

El motivo

por el cual GC fue disparado, y actualmente existen 5 tipos de GC en android.

  • GC_CONCURRENT: Se activa cuando la pila está creciendo. Por lo tanto, se puede recuperar la memoria en el tiempo de ejecución.
  • GC_EXPLICIT: Se activa cuando la aplicación llama a  System.gc(). Esto no debería ser invocado nunca , siempre y cuando la VM pueda manejar el GC solo.
  • GC_EXTERNAL_MALLOC: Se usa para memoria externa. Solo para equipos pre-Honetcomb porque desde Honeycom la memoria externa se encuentra alojada dentro del dalvik heap.
  • GC_FOR_MALLOC: Se activa cuando el heap se llena y la aplicación necesita mas memoria. esto detiene tu aplicación para procesar el GC.
  • GC_HPROF_DUMP_HEAP: Se activa cuando un archivo tipo HPROF es creado para hacer un análisis de memoria.

Memoria liberada

En esta instancia android nos informa cuanta memoria fue liberada.


GC_CONCURRENT freed 178K, 41% free 3673K/6151K, external 0K/0K, paused 2ms+2ms 

GC_EXPLICIT freed 6K, 41% free 3667K/6151K, external 0K/0K, paused 29ms

Heap

GC_CONCURRENT freed 2049K, 65% free 3571K/9991K, external 4703K/5261K, paused 2ms+2ms

El detalle del % de memoria heap libre.

Memoria Externa

D/dalvikvm( 9050): GC_CONCURRENT freed 2049K, 65% free 3571K/9991K, external 4703K/5261K, paused 2ms+2ms

Nos informa acerca de la cantidad de memoria externa liberada

GC Tiempo de pausa

D/dalvikvm( 9050): GC_CONCURRENT freed 2049K, 65% free 3571K/9991K, external 4703K/5261K, paused 2ms+2ms

En este caso estamos viendo que aparecen 2 tiempos, esto es porque nos muestra el tiempo de proceso al principio de la coleccion y luego el tiempo al termino de la coleccion

Para mas información  podemos ver la sesión   “Memory management for Android Apps” de google.

Fuentes

http://therockncoder.blogspot.com.ar/2012/09/fixing-android-memory-leak.html

http://codelog.dexetra.com/getting-around-android-memory-blues

https://sites.google.com/site/pyximanew

Anuncios

Etiquetas: , , , , , ,

About exequielc

Hola! Estás en el blog de Exequiel Catalani. Como es un blog, se trata de una extensión más o menos lineal de las cosas que hago y pasan por mi cabeza: ciberculturas, videos de la red, nuevos medios y tecnologia, y Programacion etc...

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: