Estoy creando una aplicación para Android, y recién he comenzado a examinar el uso de la memoria.
Mi aplicación consta de una actividad principal y dos fragmentos dentro (el Fragmento A contiene una vista de reciclaje con imágenes, el Fragmento B contiene una imagen y algunos cuadros de texto).
He notado que cuando inicio la aplicación, mi memoriala asignación es de aproximadamente 20MB. Al desplazarse hacia arriba y hacia abajo en la vista de reciclaje en el Fragmento A (sin cargar ningún dato nuevo) puedo hacer que el uso de la memoria aumente (hasta la recolección de basura).
Además, si paso del fragmento A al fragmento B vuelve.y luego, puedo hacer que la asignación de memoria aumente sin parar (hasta la recolección de basura). 20 -> 23 -> 29, etc. etc. Hasta que llega a 60+ y se recolecta la basura.
Si inicio la aplicación a aproximadamente 23 MB asignados y hago un desplazamiento y desplazamiento entre fragmentos, mi uso de memoria podría estar entre 40 y 60+ MB.
Cuando uso Android Studio para recolectar basura varias veces seguidas, puedo volver a bajarlo, pero no hasta 23 (generalmente hasta 30ish).
¿Es esto una pérdida de memoria ya que no puedo recolectar el 100% de la memoria con la que empecé?
Respuestas
0 para la respuesta № 1No, estrictamente hablando, no se puede tener ese tipo de pérdida de memoria en Java ya que se recolecta basura.
Obtendrá "fugas" en java si mantiene unreferencia a algo que ya no usas (I.E. una lista grande o algo que nunca eliminas). Pero tenga en cuenta que esto siempre se puede arreglar asegurándose de descartar las referencias a cosas que no necesita mantener (eliminando cosas de listas / conjuntos / mapas, cerrando archivos ... etc.). La memoria persistente que usted es. mirar es probablemente desde algunas variables estáticas, ya que están vinculadas a las clases.