¿Los procesos de Dalvik VM liberan la memoria RAM del sistema?

La documentación del desarrollador de Android, como parte de Project Svelte (lema: "¿Alguna vez intentaste ajustar Bugdroid en jeans ajustados?!?"), Tiene una página enAdministrar la memoria de su aplicación. Contiene:

Cuando el usuario navega a una aplicación diferente y su interfaz de usuario ya no está visible, debe liberar todos los recursos que solo utiliza su interfaz de usuario. La liberación de recursos de UI en este momento puede aumentar significativamente la capacidad del sistema para procesos en caché, lo que tiene un impacto directo en la calidad de la experiencia del usuario.

y:

TRIM_MEMORY_RUNNING_LOW: Su aplicación se está ejecutando y no se considera ejecutable, pero el dispositivo tiene una memoria mucho menor, por lo que debe liberar recursos no utilizados para mejorar el rendimiento del sistema (lo que afecta directamente el rendimiento de la aplicación).

y similares.

Sin embargo, esto solo tendría sentido si la "liberación de recursos" afectara de alguna manera la RAM del sistema.

Tenía la impresión de que la máquina virtual de Dalvik se comportaba como la máquina virtual de Java (o tal vez "lo hizo", si la cambiaban cuando no estaba mirando). AFAIK, la VM de Java asigna la memoria RAM del sistema para aumentar el tamaño del almacenamiento dinámico, pero nunca lo libera: una vez asignada, sigue siendo parte del espacio del almacenamiento dinámico durante el tiempo que se ejecuta el proceso.

Si la máquina virtual de Dalvik se comporta de la misma manera, no veo cómo aumentar la cantidad de espacio de almacenamiento no asignado en nuestro proceso tendría algún impacto en el rendimiento general del sistema. Ahora, liberar espacio de almacenamiento para nuestro proceso es algo bueno, y tal vez hacerlo disminuiría la probabilidad de que necesitemosMás RAM del sistema en el futuro ... pero eso no es lo que implica la documentación. La documentación indica que "Liberar recursos de UI en este momento puede aumentar significativamente la capacidad del sistema para procesos en caché"; no dice "Liberar recursos de IU en este momento no tiene un impacto inmediato, pero ayudará a reducir la huella de RAM de su aplicación en el futuro".

Ahora, si las instrucciones nos dijeran que liberáramos la memoria asignada a través del NDK, eso tendría sentido, ya que eso ocurre fuera del montón de Dalvik y afectaría la RAM del sistema. Pero la documentación no hace esa distinción.

¿La máquina virtual Dalvik realmente libera la RAM asignada al sistema, aparte de terminar el proceso? ¿Si es así cuando? Y, en menor medida, ¿cómo se hace esto, teniendo en cuenta que el recolector de basura no compacta ni copia?

¡Gracias!

Respuestas a la pregunta(1)

Su respuesta a la pregunta