Question

Je sais ce qu'est PermGen, à quoi il sert, pourquoi il échoue, comment l'augmenter, etc.

Ce que je ne sais pas, c’est ce que PermGen représente réellement. Permanent ... Gen ... quelque chose?

Quelqu'un sait-il ce que PermGen représente réellement?

Était-ce utile?

La solution

Génération permanente. Les détails sont bien sûr spécifiques à la mise en œuvre.

En résumé, il contient les objets Java associés aux classes et aux chaînes internées. Dans l'implémentation client de Sun avec partage sur, classes.jsa est mappé en mémoire pour former les données initiales, avec environ la moitié en lecture seule et la moitié en copie sur écriture.

Les objets Java simplement anciens sont conservés dans la génération permanente.

Autres conseils

PermVen est utilisé par la machine virtuelle Java pour contenir les classes chargées. Vous pouvez l'augmenter en utilisant:

-XX: MaxPermSize = 384m

si vous utilisez la machine virtuelle Java ou OpenJDK de Sun.

Ainsi, si vous obtenez une exception OutOfMemoryException: PermGen, vous devez soit augmenter la taille de PermGen, soit vous risquez de rencontrer des problèmes avec le chargeur de classes.

Génération permanente. Consultez le guide de réglage du GC pour plus de détails. sur le ramasse-miettes.

Correspond pas vraiment à la question initiale, mais peut-être que quelqu'un le trouvera utile. PermGen est en effet une zone de mémoire où Java conservait ses classes. Ainsi, beaucoup d’entre nous ont rencontré OOM dans PermGen, s’il y en avait, par exemple, de nombreuses classes.

Depuis Java 8, la zone PermGen a été remplacée par la zone MetaSpace, plus efficace et illimitée par défaut (ou plus précisément - limitée par la quantité de mémoire native, en fonction de la disponibilité de la mémoire virtuelle jvm 32 ou 64 bits et du système d'exploitation). . Cependant, il est possible de l'accorder d'une certaine manière, en spécifiant par exemple une limite maximale pour la zone. Vous trouverez plus d'informations utiles dans ce billet de blog .

PermGen signifie génération permanente .

Voici une brève présentation sur DDJ

Si je me souviens bien, le mot gen signifie génération, comme dans un récupérateur de déchets générationnel (qui traite les objets plus jeunes de manière différente des objets de mi-vie et des objets "permanents"). Le principe de localité suggère que les objets récemment créés seront d'abord effacés.

Permgen signifie génération permanente. C'est l'une des zones de mémoire de la machine virtuelle Java. Cela fait partie de Heap avec une taille fixe en utilisant un indicateur appelé MaxPermSize.

Pourquoi le nom " PermGen " ?

Cette permgen a été nommée aux débuts de Java. Permgen principales conserve toutes les métadonnées des classes chargées. Mais le problème est qu'une fois qu'une classe est chargée, elle reste dans la JVM jusqu'à son arrêt. Donc, nom permgen est opter pour cela. Mais plus tard, le chargement dynamique des classes est entré dans l'image mais le nom n'a pas été changé. Mais avec Java 8 , ils ont également résolu ce problème. Désormais, permagen a été renommé MetaSpace avec une taille de mémoire dynamique.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top