Implementación de Jetpack Compose
En esta página, se incluye información para encontrar y activar fugas de memoria que es exclusiva de los diseños basados en View. Para obtener la información principal sobre cómo capturar y analizar volcados de montón, consulta Cómo capturar un volcado de montón.
Cómo encontrar fugas de memoria
Para filtrar rápidamente las clases que podrían estar asociadas con fugas de memoria, abre el menú desplegable de clases y selecciona Show activity/fragment leaks. Android Studio
muestra las clases que cree que indican fugas de memoria para
Activity y
Fragment instancias en tu app. Los tipos
de datos que muestra el filtro incluyen lo siguiente:
- Instancias de
Activityque se destruyeron, pero a las que todavía se hace referencia. - Instancias de
Fragmentque no tienen unFragmentManagerválido, pero a las que aún se hace referencia.
Ten en cuenta que el filtro puede generar falsos positivos en las siguientes situaciones:
- Se creó un
Fragment, pero todavía no se usó. - Se almacena en caché un
Fragment, pero no como parte de unFragmentTransaction.
Para buscar fugas de memoria de forma más manual, explora las listas de clases y de instancias para encontrar objetos con un Retained Size grande. Busca fugas de memoria ocasionadas por alguno de los siguientes elementos:
- Referencias duraderas a
Activity,Context,View,Drawabley otros objetos que podrían contener una referencia a los contenedoresActivityoContext - Clases internas no estáticas, como a
Runnable, que pueden contener unaActivityinstancia. - Cachés que almacenan objetos más tiempo del necesario
Cuando encuentres posibles fugas de memoria, usa las pestañas Fields y References en Instance Details para ir a la instancia o a la línea de código fuente de interés.
Cómo activar fugas de memoria para realizar pruebas
Para provocar fugas de memoria para realizar pruebas en tu app, puedes activarlas de una de las siguientes maneras:
- Gira el dispositivo de la posición vertical a la horizontal y repite ese movimiento varias veces en diferentes estados de actividad. A menudo, la rotación del dispositivo puede hacer que en una app
se produzca la fuga de un objeto
Activity,Context, oViewdebido a que el sistema recrea laActivity, y si tu app conserva una referencia a uno de esos objetos en otro lugar, el sistema no puede incluirlo en la recolección de elementos no utilizados. - Alterna tu app y otra en diferentes estados de la actividad. Por ejemplo, navega hasta la pantalla principal y, luego, regresa a tu app.