Fugas de memoria de Android

Conocimientos básicos de fugas de memoria JAVA

1. Estrategia de asignación de memoria JAVA

2. ¿Cómo gestiona JAVA la memoria?

3. Pérdidas de memoria en JAVA

Primero veamos la estrategia de asignación de memoria JAVA

En la asignación de memoria JAVA, se divide en tres partes

1. área de almacenamiento estático

Almacena principalmente datos estáticos, cantidades globales, etc. Se ha asignado cuando se compila el programa y existe todo el tiempo durante toda la operación del programa.

2. Área de almacenamiento de pilas

Las variables de tipo básico creadas en el cuerpo del método crearán espacio de memoria en la pila. Crear objetos.

3. almacenamiento en montón

El área de montón también se conoce como asignación de memoria dinámica. Por lo general, es la memoria de nuestro nuevo objeto. Cuando la memoria no esté en uso, será reclamada por el período de recolección de elementos no utilizados.

La diferencia entre el área de pila y el área de montón:

Área de pila: Es el tipo básico de variable creada en el cuerpo del método. y variables de referencia de objetos. Cuando se crea un objeto en el cuerpo del método, Java asignará espacio de memoria para la variable en el área de la pila. Cuando se exceda el alcance del objeto, el objeto no será válido. El espacio de memoria ocupado por este objeto también será utilizado por otros métodos. La mayor diferencia es que el espacio variable en el montón será administrado por el período de recolección de basura de Java. La matriz de objetos generados, etc. también puede definir una variable especial en el área de la pila. Y esta variable es la dirección de memoria donde se almacena el objeto.

¿Cómo gestiona JAVA la memoria?

Es una cuestión de asignación y liberación.

Pérdidas de memoria en JAVA

Una pérdida de memoria significa que los objetos inútiles (objetos que ya no se usan) siguen ocupando la memoria o la memoria de los objetos inútiles no se puede liberar a tiempo. Como resultado, el desperdicio de espacio de memoria se convierte en una fuga de memoria.

La acumulación de fugas de memoria puede causar OOM. Graves consecuencias para la memoria.

1. Interés simple, como el interés simple que tiene un contexto de no aplicación

2. Clase interna anónima

En JAVA, las clases internas no estáticas contendrán referencias a clases externas de forma predeterminada

3.manejador

Para cambiar el controlador a estático. Luego use referencias débiles para mantener el contexto externo

O rmovecallbackmessage en detroy.

4. Evita usar variables estáticas

Los procesos en segundo plano que ocupan una gran cantidad de memoria se reciclarán primero.

5. Fuga de memoria causada por el cierre del bit de recurso

Tales como receptor de transmisión, contenido, documento, cursor, strame, socket, mapa de bits, etc.

6. Fuga de memoria causada por asytask

Puede asintask.cancel en destroy

Supongo que te gusta

Origin blog.csdn.net/howlaa/article/details/128813962
Recomendado
Clasificación