outofmemoryerror maxmetaspacesize java memory-management jvm jvm-hotspot permgen

maxmetaspacesize - java.lang.outofmemoryerror: metaspace



Área de método y PermGen (4)

Debería echar un vistazo a los tipos de memoria Java y, opcionalmente, a este documento sobre la recolección de basura en Java. Este último es muy detallado y ambos son útiles.

En realidad, el área de Método es una parte de la Generación Permanente:

Una tercera generación estrechamente relacionada con la generación permanente es la generación permanente. La generación permanente es especial porque contiene los datos que necesita la máquina virtual para describir objetos que no tienen una equivalencia en el nivel de lenguaje Java. Por ejemplo, los objetos que describen clases y métodos se almacenan en la generación permanente.

Estaba tratando de entender la estructura de memoria de HotSpot JVM y me confundí con los dos términos "Área de método" y espacio "PermGen" . Los documentos a los que me he referido dicen que el Área de método contiene la definición de clases y métodos, incluido el código de byte. Algunos otros documentos dicen que están almacenados en el espacio de PermGen.

Entonces, ¿puedo concluir que estas dos áreas de memoria son iguales ?


El área de método es básicamente un espacio no de pila como Stack que mantiene el esqueleto de la clase. el esqueleto incluye variables estáticas con valores, constructores, etc. La operación de reflexión se opera en esta área de memoria. Perm es un espacio de memoria paralelo al almacenamiento dinámico que mantiene el código binario de la clase en ejecución actual.


Podría considerar el "Área de método" como un subconjunto de "PermGen", ya que el espacio de generación permanente contiene definiciones de clase, pero también contiene cadenas internadas y otros bits de datos que probablemente no se descartarán,