Resumen entrevista de Java la recolección de basura

En primer lugar, el llamado GC

GC es un medio de recolección de basura (gabage Collection).

Vamos a ser creado en el desarrollo de muchos objetos que son lanzados en la pila caerá si estos objetos no sólo aumentar disminuir, entonces el espacio de almacenamiento dinámico se agotarán pronto. Por lo que necesitamos para limpiar algunos objetos inútiles.

En segundo lugar, el objeto es toda la razón

Si el objeto de referencia se establece en nulo, si el recolector de basura liberará inmediatamente la memoria ocupada por el objeto?
No. recuperación de objetos es un proceso, este proceso puede reactivar el objeto. Y recolección de basura es incierto, Zhibuding cuándo iniciar la recuperación.

Java en la muerte del sujeto se determina de dos maneras:
la referencia de conteo
análisis de accesibilidad
Ver: https://blog.csdn.net/weixin_44026997/article/details/104312276

En tercer lugar, el método de zona de recuperación

La zona método no está dentro de la pila, será basura?

En jdk1.7, zona método de generación permanente sustituyendo de forma permanente en sí es un producto del concepto de reciclaje de basura, el método de recuperación será zona de tiempo completo GC.

Para jdk1.8, aunque representación permanente fue cancelada, pero agregó parámetros MaxMetaspaceSize, para la recolección de basura cuando se utilizan las clases moribundas y cargador de clases para alcanzar el valor conjunto de parámetros "MaxMetaspaceSize" en los metadatos.

Por lo tanto, se reciclará el área de método.

En cuarto lugar, el algoritmo de recolección de basura

Marcos - barrido algoritmo
algoritmo de replicación de
marca - Algoritmo de clasificación
algoritmo de recolección generacional

4.1 marca - algoritmo de barrido
marcas - Claro considera el algoritmo colección más básica. Su idea es primera marca, y luego despejado. Un objeto a ser reciclado, es de al menos dos marcadores.
Aquí Insertar imagen Descripción

Tiene dos inconvenientes principales:

No eficiente
producirá grandes cantidades de memoria fragmentación
fragmentación de la memoria se conoce como espacio de memoria está relativamente fragmentada, la falta de espacio contiguo segmentos grandes. Así que si de repente un objeto grande, no va a encontrar un espacio contiguo suficientemente grande para almacenar, por lo que dejarán de ser activado una vez GC.
Aquí Insertar imagen Descripción
4,2 algoritmo de copia
pensó que el algoritmo de replicación, la memoria se divide en dos, dividido en dos regiones se supone que A, B ella.

Después de cada sujeto, y todos ellos ponen en la zona A, cuando la zona A es completa, la copia objetos que sobrevivieron a la zona B, y luego vaciar el área A.

El siguiente objeto se coloca en toda la región B, región B está lleno, etc., objeto duplicado para poner la supervivencia región A, la región B y luego vaciado.

De esta manera la espalda y el desplazamiento de un lado a otro a la recolección de basura completa.

La ventaja es sin desechos espaciales, la desventaja es que cada uno consigue solamente la mitad de la memoria.

La desventaja es que en la mayor tasa de supervivencia de la escena de objetos (tales como los años de edad) medio ambiente tiene que ser copiado muchas cosas, la eficiencia cae.

Aquí Insertar imagen Descripción
4.3 marca - Algoritmo de clasificación
marca - fase "marca" y el algoritmo de terminar "marca - limpieza" de la misma marca. La diferencia es que la muerte no se dirige directamente a la limpieza, pero los puso todos juntos para moverse en la memoria, y luego limpiar juntos.
Aquí Insertar imagen Descripción
4.4 generacional algoritmo de recogida
algoritmo de recolección generacional es en realidad nada nuevo, pero la tasa de supervivencia mediante el bloqueo del objeto, y luego elegir el algoritmo de recogida adecuado.

java se utiliza en el algoritmo colección generacional.

baja tasa de supervivencia objetos juntos, llamada la generación joven, utilizando el algoritmo de copia de recoger.

Alta tasa de supervivencia objetos juntos, conocida como la vieja era, el uso de la marca - barrido o marca - algoritmos de ordenación.

1). New Generation (Generación Young)

Nueva Generación meta es recoger rápido de la corto ciclo de vida de esos objetos, en circunstancias normales, todos los objetos recién generadas están en la primera de la nueva generación. La nueva memoria generación de acuerdo con 8: 1: 1 en una región eden y (survivor0, survivor1) La zona de dos superviviente, la mayoría de los objetos generados en la zona de Eden. Durante la recolección de basura, el primer distrito eden objetos vivos copiados en el área survivor0, zona eden después vació, cuando el área survivor0 también está lleno, entonces el área de la zona Edén y copia de supervivencia survivor0 objetos a la zona survivor1, a continuación, se vació y el Eden área survivor0, esta área survivor0 vez que se vacía, entonces cambian los papeles survivor0 área área y survivor1 (es decir, el siguiente basura escaneará la zona de Eden y recuperación de la zona survivor1), que es, manteniendo el área survivor0 está vacío, y así sucesivamente. En particular, cuando el área de almacenamiento survivor1 no es suficiente para objetos vivos región y área survivor0 eden, será en vivo objetos colocados directamente en la vieja era. Si el año de edad estaba lleno, que dará lugar a una FullGC, es la nueva generación, el año de edad son reciclados. Nota, GC Cenozoico también se llama MinorGC, frecuencia de ocurrencia MinorGC es relativamente alta, por lo que no es necesariamente el único desencadenante zona de Eden es completa.

2) (Generación antiguo de antiguo)

La tienda de edad, son algunas de ciclo de vida más largo del objeto, como se describió anteriormente, como el objeto pasó por N veces después de la recolección de basura está todavía vivo en la nueva generación será colocado en la vieja era. Además, la memoria de la vejez es también mucho más grande que la nueva generación (más o menos la proporción es de 1: 2), cuando el año de edad gatillo completo Mayor CG (Full GC), de edad el objeto sobrevivió mucho tiempo, por lo que la frecuencia de aparición de relativamente baja FullGC .

3) Generación Permanente (Generación Permanente)

Se utiliza principalmente para el almacenamiento de la generación permanente de archivos estáticos, como las clases y métodos Java. Cuando la generación permanente de ningún impacto significativo en la recolección de basura, pero algunas aplicaciones se pueden generar de forma dinámica, o llame a alguna clase, tales como el uso de un reflexivo, la agencia dinámica, CGLIB y otro marco de código de bytes, en este momento necesidad de establecer una proporción relativamente grande de generación permanente de espacio para almacenar la carrera durante la nueva clase.

Publicados 114 artículos originales · elogios ganado 16 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/weixin_44026997/article/details/105164687
Recomendado
Clasificación