permsize parametro memoria aumentar java memory

parametro - memoria jvm java



¿Qué es ''PermSize'' en Java? (3)

El grupo permanente contiene todo lo que no son datos de la aplicación, sino elementos necesarios para la máquina virtual: generalmente contiene cadenas internas, el código de bytes de las clases definidas, pero también otros datos "no tuyos".

Estaba revisando el documento en Java Memory Management y encontré PermSize, que no pude entender. El documento dice que almacena, "JVM almacena sus metadatos", pero no pude entender exactamente qué significan los metadatos. Estaba buscando en Google y en algún lugar que lo leí almacena un objeto de valor (objeto definido por el usuario).

¿Qué tipo de objetos se almacenan allí? Un ejemplo con una explicación sería genial.


Una definición rápida de la "generación permanente":

"La generación permanente se utiliza para contener datos reflexivos de la propia máquina virtual, como objetos de clase y objetos de método. Estos objetos reflexivos se asignan directamente a la generación permanente, y se dimensionan independientemente de las otras generaciones". [ref]

En otras palabras, aquí es donde van las definiciones de clase (y esto explica por qué puede obtener el mensaje OutOfMemoryError: PermGen space si una aplicación carga un gran número de clases y / o cuando se OutOfMemoryError: PermGen space ).

Tenga en cuenta que PermSize es adicional al valor -Xmx establecido por el usuario en las opciones de JVM. Pero MaxPermSize permite que la JVM pueda hacer crecer el PermSize a la cantidad especificada. Inicialmente, cuando se carga la máquina virtual, MaxPermSize seguirá siendo el valor predeterminado ( -client para -client y -client para -client ) pero no tomará esa cantidad hasta que se necesite. Por otro lado, si estableces AMBOS PermSize y MaxPermSize en 256mb, notarás que el montón general se ha incrementado en -Xmx adicionales a la configuración -Xmx .


Esta publicación de blog ofrece una buena explicación y algunos antecedentes. Básicamente, la "generación permanente" (cuyo tamaño viene dado por PermSize) se usa para almacenar cosas para las cuales la JVM tiene que asignar espacio, pero que (normalmente) no serán recogidas basura (de ahí "permanentes") (+). Eso significa, por ejemplo, clases cargadas y campos estáticos.

También hay una [ref] directamente de Sun, que responde algunas preguntas sobre la generación permanente. Finalmente, aquí hay una publicación de blog con muchos detalles técnicos.

(+) En realidad, algunas partes de la generación permanente se convertirán en GC, por ejemplo, los objetos de clase se eliminarán cuando se descargue una clase. Pero eso no era común cuando la generación permanente se introdujo en la JVM, de ahí el nombre.