creación y asignación de objetos jvm y recolección de basura

Mecanismo CAS (comparar e intercambiar): mecanismo de comparación e intercambio para resolver el problema de concurrencia en la asignación de memoria de objetos Métodos de asignación de memoria: colisión de punteros y lista libre

 En el pasado, JVM usaba CAS para resolver el problema de la concurrencia de subprocesos, pero había un bucle continuo de CAS que desperdiciaba CPU. Hoy en día, se asignan diferentes direcciones de memoria a cada subproceso. En la máquina virtual, la asignación de memoria predeterminada será la Segunda forma: los desarrolladores usan CAS solo después de que está cerrado.

Un objeto java contiene estas cosas:

Reciclaje de GC

Entre los métodos para determinar la supervivencia de un objeto, el algoritmo de recuento de referencias comúnmente utilizado es +1 cuando un objeto tiene una referencia. Esto es relativamente simple, pero se vuelve problemático cuando dos objetos apuntan entre sí, porque es razonable decir "Estos dos objetos son inútiles. El objeto debería ser basura y debería reciclarse, pero provocó un punto muerto, por lo que no se puede reciclar. La máquina virtual actual utiliza un algoritmo de análisis de accesibilidad.

El principio del algoritmo de accesibilidad: hay una matriz en el GC que almacena la pila, las variables estáticas, el grupo constante y otros datos como el nodo raíz. Travesía. Si el objeto no se atraviesa, se reciclará. No hay ningún objeto. en el objeto que tiene alguna referencia a él. , se considera basura y debe reciclarse. Por ejemplo, en el siguiente punto muerto, simplemente se guían entre sí en el montón, pero no hay nada que los guíe en las raíces del GC, por lo que GC los trata como basura.

 Cita de Java:

 

 Referencia fuerte: GC no reciclará mientras exista una referencia fuerte.

Refresco: sólo cuando la memoria de la aplicación no sea suficiente, se reciclará

Consumo débil: mientras se active el GC, se reciclará

Principios de asignación de objetos para la recolección de basura:

1. Otro aspecto de la promoción de la edad es la determinación dinámica de la edad.

Por ejemplo: de a a vejez

Se agrega desde la edad más pequeña en el área TO. Cuando sea mayor que la mitad de la memoria de configuración de TO, se moverá directamente a la edad anterior desde la edad en la que finaliza la suma hasta la edad más grande.

2. También está el tema de la edad, este umbral lo establece la máquina virtual, la mayoría de las veces es 15, si es mayor que este umbral se promocionará.

¿Por qué la nueva generación se divide en 3 zonas? Esto se debe a que el reciclaje de nueva generación utiliza un algoritmo de copia y los tamaños de las tres áreas son Eden:from:to=8:1:1 como se muestra a continuación.

 

 Algoritmo de recolección de basura:

Algoritmo de accesibilidad raíz para encontrar objetos no reciclables

Algoritmo de copia: copie los objetos que no se reciclan en el espacio reservado y luego recójalos como basura

Por ejemplo: el área de Eden de nueva generación tiene un espacio reservado s0 y s1 en el área de Eden. Cuando el área de Eden esté llena, se iniciará GC.

La vieja generación utiliza un algoritmo de limpieza, la razón principal es que la vieja generación está básicamente viva y no hay necesidad de copiar.

Recolección de basura:

 El GC joven solo recicla la nueva generación, mientras que el GC completo recicla la generación anterior y el área del método.

Pregunta 1: ¿La expansión de la nueva generación aumentará la eficiencia?

 

Supongo que te gusta

Origin blog.csdn.net/xueyoubangbang/article/details/121517474
Recomendado
Clasificación