2010-11-19 13 views
11

Suponiendo inicio mi máquina virtual de Java con los siguientes parámetros:¿Es el espacio PermGen de Java parte de la memoria total de VM?

-Xms1024m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m 

¿Tienen el 512m PermGen espacio añadir a la memoria 1024m o son parte de ella? O en otras palabras, ¿tengo un consumo de memoria total de 1536 m o de 1024 m? En este último caso, ¿eso significa que la aplicación tiene solo 512m para fines distintos al espacio PermGen?

Háganme saber en caso de que esta pregunta revele una falta de comprensión del espacio PermGen. ;-)

+0

¿Por qué no lo pruebas? Debería ser inmediatamente visible en la parte superior/el administrador de tareas. –

+0

posible duplicado de [¿Se incluye Permgen en -Xmx?] (Http://stackoverflow.com/questions/4084280/is-permgen-included-in-xmx) –

Respuesta

15

Los parámetros -Xms y -Xmx se refieren a montón de memoria, mientras que el espacio PermGen una piscina de memoria independiente.

En otras palabras, el tamaño total de la memoria disponible para su aplicación Java será de 1,5 GiB en lugar de 1 GiB, y obtendrá el gigabyte completo de espacio para los objetos asignados en el montón.

0

En la JVM de Sun, la generación permanente no es parte del montón. Es un espacio diferente para las definiciones de clases y los datos relacionados, así como también dónde viven las cadenas internas.

1

Acabo de tropezar en esta página a través de Google. Esta es una cierta confusión sobre si PerGen es parte de Heap o no: La respuesta es "Heap se divide en partes/generaciones más pequeñas y estas partes son: Generación Joven, Generación Antigua o Tensionada, y Generación Permanente". Esto es lo que Oracle dice por decir lo menos. Tiene mucho más sentido seguir lo que dice el autor que la audiencia en el dominio web.

Una breve nota sobre PermGen: generación Permanente contiene metadatos requeridos por la JVM para describir las clases y los métodos utilizados en la aplicación. La generación permanente está poblada por la JVM en tiempo de ejecución en función de las clases que utiliza la aplicación. Además, las clases y métodos de la biblioteca Java SE pueden almacenarse aquí.

Cuestiones relacionadas