Tout en apprenant sur le profilage de la mémoire java, je continue à voir le terme "perm space" en plus de "heap". Je sais ce que le tas est - quel est l'espace perm?
Réponses
Trop de publicités?Il représente la génération permanente:
La génération permanente est spécial car il contient des méta-données décrivant l'utilisateur des classes qui ne sont pas partie du langage Java). Exemples de ces méta-données sont des objets description des classes et des méthodes et ils sont stockés de façon Permanente Génération. Applications avec de grandes base de code peut rapidement remplir cette le segment des tas qui sera la cause de
java.lang.OutOfMemoryError
: PermGen pas importe comment votre -Xmx et combien vous avez de mémoire sur la machine.
Perm space
est utilisé pour garder les informations pour les classes chargées, et quelques autres fonctionnalités avancées telles que l' String Pool
(hautement optimisée de la chaîne de l'égalité des tests), qui ont habituellement créé par String.intern()
méthodes.
En tant que votre demande(nombre de classes) va croître de cet espace doit se remplir rapidement, depuis la collecte des ordures sur cet Espace n'est pas très efficace pour nettoyer au besoin, vous Sortir rapidement de la Mémoire : perm gen espace d'erreur. Ensuite, aucune application doit s'exécuter sur la machine de manière efficace, même après avoir eu un énorme vide JVM.
Avant de commencer votre demande, vous devriez java -XX:MaxPermSize
pour se débarrasser de cette erreur.