Android FinalizerReference con 7mb de RAM
Sé que hay 2-3 tema sobre esto, hubo problemas con FinalizerReference
, pero todavía no se explica bien. Tengo una pregunta sobre esta clase y cómo funcionan las cosas en ella.
No importa lo que hago en mi aplicación, FinalizerReference
siempre mantener 5-10 RAM
para sí mismo, y mi pregunta es:
- ¿Cómo puedo crear Libgdx.so desde el origen para Android con el rastreo gdb habilitado?
- Prueba Android "destruir actividad para ahorrar espacio"
- SocketTimeoutException Android
- Tamaño del mapa de bits devuelto por la cámara a través de la intención?
- Android: ¿Dónde está la herramienta Monitor de memoria?
¿Es este un comportamiento normal del que no tengo que preocuparme?
Como sé, los objetos Java se liberan, pero algunos tipos de "punteros" permanecen en la memoria y se limpian con la siguiente GC (así como los objetos normales que se limpian con GC, sin hacer referencia a él).
Para mí, esto es un poco incorrecto, porque si tengo ~ 64 MB de RAM para usar con mi aplicación y 10 MB se desperdician – debe haber un problema.
Lo revisé todo, eliminé todas las fugas que tenía y en la actualidad mi aplicación se queda en 18 ~ mb RAM (7 RAM – gráficos, 2 RAM – Objetos). El resto – FinalizerReference
; /
Aquí hay una captura de pantalla de AppHeap:
Aquí hay una pantalla de sus instancias:
Y aquí está mi monitor de memoria (permanece en este formulario durante 30 minutos):
Además, en el panel 'Instancias', hay 50 entradas incluyendo ~ 5 de mi código y bibliotecas que uso. El resto es de Android: InputManagers, Parcels, Proxies, etc.
Editar
Esto ocurre en el Galaxy S5. En Android Emulator obtengo ~ 2MB de FinalizerReference
- Referencia débil en lugar de getActivity () (evitar Android memoria fugas)?
- Android Universal Image Loader - ¿Cómo configuro las especificaciones correctamente?
- Android Simulator: Fácil manera de simular un proceso de reinicio debido a la baja memoria?
- Fugas de contexto de Android en AsyncTask
- Cómo evitar la pérdida de memoria en context.getSystemService (Context.CAMERA_SERVICE)?
- ¿Es esta Runnable a salvo de fugas de memoria?
- ¿Cuál es la cantidad máxima de RAM que una aplicación puede usar?
- Android: ¿Cómo probar la pérdida de memoria en una aplicación?
Tuve el mismo problema con FinalizerReference
, sólo en Nexus 5.
Aquí hay una captura de pantalla de heap dump de Android Studio.
Después de algunas investigaciones, he encontrado este comentario, donde dijo que esto podría ser causado por el sistema.
Además, he utilizado la herramienta de análisis de memoria de Eclipse (MAT) , que demostró que tantos objetos FinalizerReference
pertenecen a System.
Y, no ocupa tanto recuerdo como mostró el volcado de Android Studio.
No solucioné el problema, pero recibí un consejo de que debía revisar un proyecto vacío.
Intentado con:
- Android Studio Windows x32
- Android Studio Windows x64
- IntelliJIDEA x32
- IntelliJIDEA x64
Todo esto hace que FinalizerReference
mantenga 5-10 mb
de RAM
para sí mismo, en proyectos vacíos y no vacíos.
Simplemente ignore el problema y siga escribiendo código.
- El espaciado de línea EditText incrementa el problema y la posición del cursor en la línea wrt
- Recursos de Android por género