27 votes

Importance de l'espace PermGen

Quelle est la signification de l'espace PermGen en Java?

42voto

danben Points 35312

PermGen space est réservée à long terme des objets - surtout Class objets chargés par l' ClassLoader. PermGen ne seront pas nettoyés, sauf dans des circonstances très particulières (en particulier, lorsque l' ClassLoader que les chargés de ces classes est hors de portée).

C'est un garbage collection d'optimisation - si des objets que nous ne nous attendons pas à être des ordures collectées sont conservées séparément, il compresse l'espace où le reste des objets sont stockés, ce qui conduit à moins de travail pour le garbage collector.

7voto

SyntaxT3rr0r Points 10771

Le PermGen est spécifique à VMs avoir générations de collecte des ordures.

Si vous utiliser, disons, JRockit, de l'importance de la PermGen" est inexistant car JRockit n'a pas ce concept.

Il utilise pour être commun, il y a quelques années, quand l'étrange "de PermGen space" des erreurs ont commencé à apparaître et que personne ne savait encore qui la faute qu'il a été (Tomcat + Hibernate + Soleil VM utilisée pour déclencher ce) afin de remplacer un composant de nos jours, les problèmes sont compris, mais il y a des années quand ils ont commencé le recadrage, il n'était guère possible de trouver toute l'information sur ce sujet). Vous pouvez remplacer Tomcat avec de la Résine ou le Soleil VM avec JRockIt etc.

Je pense qu'il est important de souligner que PermGen ne font pas partie de la Java des specs et qu'un détail d'implémentation de (très) certaines machines virtuelles.

6voto

Michael Borgwardt Points 181658

La seule chose que vous devez vraiment savoir est que l'espace PermGen est séparé du tas général et n'est pas affecté par le paramètre VM -Xmx . Si vous avez une application qui charge de nombreuses définitions de classe (comme un serveur d'applications ou un IDE), vous pouvez définir la taille de l'espace PermGen à l'aide de l'option -XX:MaxPermSize VM.

4voto

lrussell Points 2542

La génération permanente contient des métadonnées décrivant les classes d'utilisateurs (classes qui ne font pas partie du langage Java).

Les applications avec une grande base de code peuvent remplir ce segment du tas, ce qui entraînera java.lang.OutOfMemoryError: PermGen . Cela n'est pas affecté par le paramètre -Xmx ni par la quantité de mémoire dont vous disposez sur la machine. Pour définir une nouvelle taille initiale, utilisez -XX:PermSize=64m . Pour définir une taille maximale, utilisez -XX:MaxPermSize=128m

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X