Conversión de generación permanente a metaespacio en JDK1.8

Reimpreso de https://www.cnblogs.com/paddix/p/5309550.html .

 

La naturaleza del metaespacio es similar a la de la generación permanente, y ambas son la realización del área de método en la especificación JVM. Sin embargo, la mayor diferencia entre el metaespacio y la generación permanente es que el metaespacio no está en la máquina virtual, sino que usa la memoria local.

Por lo tanto, de forma predeterminada, el tamaño del metaespacio está limitado solo por la memoria local, pero el tamaño del metaespacio se puede especificar mediante los siguientes parámetros:

  -XX: MetaspaceSize , el tamaño del espacio inicial, cuando se alcanza este valor, la recolección de basura se activará para la descarga de tipo y el GC ajustará el valor: si se libera mucho espacio, el valor debe reducirse adecuadamente; si un se libera poco espacio, luego, cuando no exceda MaxMetaspaceSize, aumente el valor apropiadamente.
  -XX: MaxMetaspaceSize , el espacio máximo, no hay límite por defecto.

  Además de las dos opciones de tamaño especificadas anteriormente, hay dos atributos relacionados con GC:
  -XX: MinMetaspaceFreeRatio , después de GC, el porcentaje mínimo del espacio restante del Metaspace, lo que reduce la recolección de basura causada por el espacio asignado.
  -XX: MaxMetaspaceFreeRatio , después del GC, el porcentaje de la capacidad de espacio restante del Metaspace más grande, reduciendo la recolección de basura causada por el espacio libre.

(JDK 1.7 y 1.8 transfieren las constantes de cadena de la generación permanente al montón)

¿Por qué esta conversión? Algunas posibles razones:

  1. Las cadenas existen en la generación permanente, que es propensa a problemas de rendimiento y desbordamiento de memoria.

  2. Es difícil determinar el tamaño de la clase y la información del método, por lo que es difícil especificar el tamaño de la generación permanente. Demasiado pequeño es propenso al desbordamiento permanente de la generación, y demasiado grande es probable que provoque el desbordamiento de la generación anterior. .

  3. La generación permanente traerá una complejidad innecesaria al GC y la eficiencia de recuperación es baja.

  4. Oracle puede combinar HotSpot y JRockit en uno.

 

Supongo que te gusta

Origin blog.csdn.net/johnt25/article/details/113101460
Recomendado
Clasificación