ocultos memoria limpiar interna eliminar como borrar basura archivos aplicaciones android multithreading garbage-collection android-3.0-honeycomb

memoria - Detalles técnicos del recolector de basura Android



limpiar android sin aplicaciones (1)

Para responder a una de sus preguntas, la máquina virtual de Dalvik sí utiliza un recolector de basura de rastreo, utilizando un enfoque de marca y barrido .

Según la arquitectura de la máquina virtual Dalvik :

La estrategia actual en el recolector de basura Dalvik es mantener los bits de marca, o los bits que indican que un objeto en particular es "accesible" y, por lo tanto, no debe ser recolectado en basura, separado de la memoria de otro montón.

Desde Android 5.0 (Lollipop) y más, Dalvik fue reemplazado por Android Runtime (ART) .

Google tiene lo siguiente que decir sobre los cambios en el recolector de basura de Dalvik a ART ( source ) :

Recolección de basura mejorada

La recolección de basura (GC) puede perjudicar el rendimiento de una aplicación, lo que resulta en una visualización entrecortada, poca capacidad de respuesta de la IU y otros problemas. ART mejora la recolección de basura de varias maneras:

  • Una pausa GC en lugar de dos
  • Procesamiento paralelo durante la pausa restante del GC
  • Colector con menor tiempo total de GC para el caso especial de limpieza de objetos de corta duración recientemente asignados
  • Mejora la ergonomía de la recolección de basura, lo que hace que la recolección de basura simultánea sea más oportuna, lo que hace que los eventos GC_FOR_ALLOC sean extremadamente raros en los casos de uso típicos.

Ver también:

Mientras hago una investigación sobre aspectos comunes / diferencias de varias plataformas móviles, uno de los aspectos bajo investigación es la administración de memoria. Como tal, estoy interesado en información técnica más detallada sobre los diversos mecanismos.

En concreto, por ejemplo, ¿ qué tipo de recolector de basura utiliza Android ?
( [La Discusión de Grupos de Google] sugiere que está utilizando un mecanismo de "rastreo", pero apreciaría una fuente "más oficial" que posiblemente podría citar, además de esperar encontrar información sobre las implicaciones que el tipo podría tener para el programador ).

Además, una de mis preguntas es ¿de qué manera se ha ajustado específicamente el GC en Android 3.0 (Honeycomb) para utilizar múltiples procesadores ?
[Guía de desarrolladores de Android] sugiere que

Android 3.0 es la primera versión de la plataforma diseñada para ejecutarse en arquitecturas de procesador de uno o varios núcleos. Una variedad de cambios en la máquina virtual Dalvik, la biblioteca Bionic y en otros lugares agregan soporte para multiprocesamiento simétrico en entornos multinúcleo. Estas optimizaciones pueden beneficiar a todas las aplicaciones, incluso aquellas que son de un solo hilo. Por ejemplo, con dos núcleos activos, una aplicación de un solo subproceso aún puede ver un aumento de rendimiento si el recolector de basura Dalvik se ejecuta en el segundo núcleo. El sistema se encargará de esto automáticamente ".

Como antes, prefiero encontrar una fuente con más información técnica para leer sobre esto. Una vez más, ¿cuál es el impacto en el desarrollador (aparte de lo obvio de que se podría esperar un mayor rendimiento)?

Cualquier entrada es apreciada.

¡Gracias!