java - xmn - PermGen y Heap, diferencia y su significado
limit heap size java (4)
Creo que Permgen es el área de memoria dentro de la memoria Heap solamente. Se creó para fines especiales, como la celebración de String.
Todo el objeto creado no obtiene memoria Permgen. Es solo para clasess especiales como String en JDK 6 o inferior.
En las versiones modernas de JDK como 8 y superiores, Pergen no se encuentra, sin embargo, se introducen nuevas memorias como Non Heap y otras memorias de caché diferentes.
Amigos,
¿Podrías darme importancia, diferencia y usos para Heap y PermGen? También sería bueno saber qué clase se cargan en ellos respectivamente.
Explicación relacionada con la especificación de Java VM sería realmente útil
Gracias Punith
Bueno, no soy un experto, pero la memoria PermGem reside dentro del Heap, ya que es como un lugar especial donde todas las clases se cargan en tiempo de ejecución. Entonces, si tiene demasiadas clases, PermGem arroja una OutOfMemoryException. Y bien, el montón almacena los objetos que instaure dentro de su código Java, donde el GC recoge los objetos a los que no hace referencia ninguna variable en un hilo en ejecución en la pila.
La memoria (Heap) se gestiona en generaciones, o agrupaciones de memoria que contienen objetos de diferentes edades. La recolección de basura ocurre en cada generación cuando la generación se llena. Los objetos se asignan en una generación para objetos más jóvenes o la young generation
, y debido a la mortalidad infantil, la mayoría de los objetos mueren allí.
Cuando se construye un objeto nuevo, se dirige al espacio Eden, que forma parte de Young Generation
.
Si el objeto todavía está vivo después de un tiempo, pasa a la tenured generation
donde se encuentran los objetos de larga vida.
Si se supone que el objeto debe vivir hasta que exista un proceso excesivo, el objeto se moverá a Perm Generation
. Java classes
se almacenan en la generación permanente.
Hay buenos enlaces en ¿Qué significa PermGen en realidad? . Me gustó especialmente este blog