Quelle est la signification de l'espace PermGen dans Java?Signification de l'espace PermGen
Répondre
L'espace PermGen est réservé aux objets à long terme - principalement des objets Class
chargés par le ClassLoader
. PermGen ne sera pas récupéré, sauf dans des circonstances très particulières (en particulier, lorsque le ClassLoader
qui a chargé ces classes est hors de portée).
Ceci est une optimisation de la récupération de place - si les objets que nous ne pensons pas être collectés sont stockés séparément, cela compacte l'espace où les autres objets sont stockés, ce qui réduit le travail du garbage collector.
Le ClassLoader auquel vous faites référence est le système chargeur de classe? Où sont stockées les classes chargées par le chargeur de classe bootstrap? –
Les classes chargées par le chargeur bootstrap sont celles qui font partie intégrante du langage, comme 'String' et' Object'. Cela fait partie de la mise en œuvre native de la JVM, donc il n'y a pas de réponse standard concernant "où". – danben
Fine. Alors, le permgen contiendra-t-il les classes chargées par le chargeur de classe système? –
La seule chose que vous avez vraiment besoin de savoir est que l'espace PermGen est séparé du tas général et non affecté par le paramètre VM -Xmx
. Si vous avez une application qui charge beaucoup de définitions de classe (comme un serveur d'applications ou un IDE), vous pouvez définir la taille de l'espace PermGen en utilisant l'option de machine virtuelle -XX:MaxPermSize
.
La génération permanente détient les méta-données décrivant les classes d'utilisateurs (classes qui ne font pas partie du langage Java).
Applications avec grande base de code peut remplir ce segment du tas qui provoquera java.lang.OutOfMemoryError: PermGen
. Ceci n'est pas affecté par le paramètre -Xmx ou la quantité de mémoire que vous avez sur la machine. Pour définir une nouvelle taille initiale, utilisez -XX:PermSize=64m
. Pour définir une taille maximale, utilisez -XX:MaxPermSize=128m
Qu'entendez-vous par "classes qui ne font pas partie du langage Java"? Connaissez-vous des classes qui ne seraient pas stockées dans PermGen? – danben
Le PermGen est spécifique aux machines virtuelles ayant une récupération de place générationnelle.
Si vous utilisez, par exemple, JRockit, la « signification de PermGen » est inexistante parce JRockit n'a pas ce concept. Il était courant, il y a quelques années, de voir apparaître des erreurs bizarres "hors espace PermGen" et que personne ne savait encore à qui appartenait la faute (Tomcat + Hibernate + Sun VM utilisée pour le déclencher) pour remplacer l'un des composants (de nos jours, les problèmes sont compris, mais il y a des années, quand ils ont commencé à cultiver, il était difficile de trouver des informations à ce sujet). Vous pouvez remplacer Tomcat par Resin ou Sun VM par JRockIt, etc.
Je pense qu'il est important de souligner que PermGen ne fait pas partie des spécifications Java et seulement un détail d'implémentation de (assez) certaines machines virtuelles.
- 1. Augmenter l'espace permgen
- 2. Sun permgen & JRockit garbage collection
- 3. signification de '+ ='
- 4. Outil pour voir les objets dans permgen
- 5. java.lang.OutOfMemoryError: espace PermGen en tomcat avec Eclipse
- 6. Erreur JAXB - permGen sur le serveur Tomcat
- 7. Signification de NSLog 10b?
- 8. Signification de trackbar
- 9. Signification de Super?
- 10. fonction de rappel signification
- 11. Signification de cette déclaration?
- 12. La signification de ':' et '?'
- 13. Signification de -fold
- 14. Signification de SEQUENCE_NEXT_HI_VALUE
- 15. signification de 'z'?
- 16. Signification de -DHAVE_CONFIG_H dans makefiles
- 17. Signification de otool champ « caps »
- 18. signification de "vue fortement typée"
- 19. Signification de cette notation #pragma
- 20. Signification de: Array1: .word 00h20
- 21. Informix: La signification de point (.)?
- 22. la signification de l'objet allégé
- 23. postgresql execParams paramTypes signification?
- 24. signification du fichier include
- 25. Signification et définition xmlns = « »
- 26. Signification d'un opérateur **
- 27. Signification du suffixe U
- 28. Signification d'attente ((int *) 0)
- 29. Comment puis-je empêcher les erreurs d'espace PermGen dans NetBeans?
- 30. Comment concevez-vous une bonne chaîne d'espace permgen en Java?
duplication possible de [Que représente réellement PermGen?] (Http://stackoverflow.com/questions/318942/what-does-permgen-actually-stand-for) – rds