2011-05-28 1 views
4

Comment puis-je empêcher cela? Cela se passe par exemple si je recharge fréquemment une page datatable. Je comprends qu'il ya quelque chose de mal avec jeu garbage collector ..java.lang.OutOfMemoryError: PermGen space

J'utilise Eclipse IDE Java EE, JSF2, richfaces4

Répondre

10

Ceci est spécifique à Tomcat. C'est plutôt un mauvais hotpublisher/hotdeployer et il souffre de fuites de mémoire. Je suggère de désactiver la publication automatique par l'écran de configuration du serveur dans Eclipse et de redémarrer manuellement Tomcat chaque fois que vous souhaitez refléter les modifications enregistrées. Le redémarrage ne devrait pas prendre beaucoup de temps de toute façon si vous avez un seul projet. Glassfish, par exemple, est beaucoup plus robuste (et plus rapide!) Quand il s'agit de publier à chaud. Pour savoir comment installer Glassfish et l'intégrer dans le développement Eclipse for JSF 2.0, vérifiez this tutorial.

+0

Aha, je vois la différence. Si la publication automatique est activée, les modifications dans xhtml prennent effet sans redémarrer le serveur. Si c'est le cas, les changements dans xhtml ne sont pas reflétés, jusqu'à ce que le serveur soit redémarré. Donc c'est le choix de la sophie :-) Je vais jeter un coup d'oeil au serveur glassfish, merci encore! – gaffcz

+0

Je pense que Tomcat 7/8/9 moderne n'est plus une raison pour 'OutOfMemoryError: PermGen space' lui-même. '' rend le développement très agréable si l'application n'a pas de fuites de mémoire. – gavenkoa

-1

Si vous avez plus de projets dans votre dossier webapps cette exception viendra .Retirez certains projets cette exception ne viendra pas.

0

Vous devez allouer plus d'espace à l'espace PermGenSpace de la machine virtuelle Java Tomcat.

Cela peut être fait avec l'argument JVM: -XX:MaxPermSize=128m

Par défaut, l'espace PermGen est 64M (et il contient toutes les classes compilées, donc si vous avez beaucoup de pot (classes) dans votre classpath, vous peut en effet remplir cet espace).

Sur une note de côté, vous pouvez surveiller la taille de l'espace PermGen avec JVisualVM et vous pouvez même inspecter son contenu avec YourKit Java Profiler

Questions connexes