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 signifie PermGen. Permanent ... Gén ... quelque chose?
Est-ce que quelqu'un sait ce que signifie PermGen?
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 signifie PermGen. Permanent ... Gén ... quelque chose?
Est-ce que quelqu'un sait ce que signifie PermGen?
Réponses:
Génération permanente. Les détails sont bien sûr spécifiques à la mise en œuvre.
En bref, il contient les objets Java associés aux classes et aux chaînes internes. Dans l'implémentation client de Sun avec partage activé, la classes.jsa
mémoire est mappée pour former les données initiales, avec environ la moitié en lecture seule et la moitié en copie sur écriture.
Les objets Java qui sont simplement anciens sont conservés dans la génération titulaire.
PermGen est utilisé par la JVM pour contenir les classes chargées. Vous pouvez l'augmenter en utilisant:
-XX:MaxPermSize=384m
si vous utilisez Sun JVM ou OpenJDK.
Donc, si vous obtenez une OutOfMemoryException: PermGen, vous devez soit agrandir PermGen, soit vous pourriez avoir des problèmes de chargeur de classe.
Génération permanente. Consultez le guide de réglage de java GC pour plus de détails sur le garbage collector.
Pas vraiment lié à la question d'origine, mais peut-être que quelqu'un la trouvera utile. PermGen est en effet une zone en mémoire où Java conservait ses classes. Donc, beaucoup d'entre nous sont tombés sur OOM dans PermGen, s'il y avait, par exemple, beaucoup de cours.
Depuis Java 8, la zone PermGen a été remplacée par la zone MetaSpace, qui est 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 32 ou 64 bits jvm et du système d'exploitation). Cependant, il est possible de l'ajuster de certaines manières, en spécifiant par exemple une limite maximale pour la zone. Vous pouvez trouver des informations plus utiles dans cet article de blog .
PermGen est synonyme de génération permanente .
Voici un bref texte de présentation sur DDJ
Si je me souviens bien, le gen signifie génération, comme dans un garbage collector générationnel (qui traite les objets plus jeunes différemment des objets de la quarantaine et des objets «permanents»). Le principe de localité suggère que les objets récemment créés seront d'abord effacés.
Permgen est synonyme de génération permanente. C'est l'une des zones de mémoire JVM. Il fait partie de Heap avec une taille fixe en utilisant un indicateur appelé MaxPermSize.
Pourquoi le nom «PermGen»?
Ce permgen a été nommé au tout début de Java. Permgen mains 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 restera dans la JVM jusqu'à l'arrêt de la JVM. Le nom permgen est donc opter pour cela. Mais plus tard, le chargement dynamique des classes est entré en scène 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.