IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tomcat et TomEE Java Discussion :

Horrible Exception: java.lang.OutOfMemoryError: PermGen space


Sujet :

Tomcat et TomEE Java

  1. #1
    Membre averti Avatar de liquideshark
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2006
    Messages : 347
    Points : 325
    Points
    325
    Par défaut Horrible Exception: java.lang.OutOfMemoryError: PermGen space
    Saut tout le monde,

    J'ai un serveur Tomcat 6.0.16. j'ai dessus environs 7 applications et de temps en temps il me genere cette exeption
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Horrible Exception: java.lang.OutOfMemoryError: PermGen space
    sur la page web.
    J'ai essayé de palier au probléme en inscrivant dans le catalina.bat en inscrivant Avec 2G0 sur le serveur

    Merci pour votre aide
    ===================================
    ===Accroche ta charrue à l'Open source===
    ===================================

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 511
    Points : 386
    Points
    386
    Par défaut
    J'ai eu ce pb et cela venait de thread non clôturés à savoir:
    - resultset non clos (je passais la connexion en paramètre et elle était close))
    - pb d'enregistrement de données dans un fichier properties
    Pour le premier point en scrutant le code ça a été vite traité mais pour le second point c'est la chance.

    Il te faudrai essayer de cerner l'appli(s) qui fou le bazard par éléminination et la passer éventuellement au profiler si tu es sur du code.

    Courage pour moi ça a duré 6 mois pour une appli.

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 143
    Points : 157
    Points
    157
    Par défaut
    Pour augmenter le PermGen, il te faut plutôt utiliser l'argument "-XX:MaxPermSize", par exemple en mettant "-XX:MaxPermSize=256m".

    Par défaut le PermGen n'est pas très gros, donc si tu as beaucoup d'applications ce n'est pas forcément certain que tu aies un soucis. Regarde plutôt celles qui utilisent Hibernate, Spring, ou de l'AOP, généralement ce sont celles-là qui font monter ton PermGen. Regarde également si ton PermGen n'augmente pas quand tu redéploye une application à chaud, c'est un problème fréquent.
    Julien Dubois

    http://www.ippon.fr

  4. #4
    Membre averti Avatar de liquideshark
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2006
    Messages : 347
    Points : 325
    Points
    325
    Par défaut
    Citation Envoyé par julien.dubois Voir le message
    Pour augmenter le PermGen, il te faut plutôt utiliser l'argument "-XX:MaxPermSize", par exemple en mettant "-XX:MaxPermSize=256m".

    Par défaut le PermGen n'est pas très gros, donc si tu as beaucoup d'applications ce n'est pas forcément certain que tu aies un soucis. Regarde plutôt celles qui utilisent Hibernate, Spring, ou de l'AOP, généralement ce sont celles-là qui font monter ton PermGen. Regarde également si ton PermGen n'augmente pas quand tu redéploye une application à chaud, c'est un problème fréquent.
    salut j'ai mis le -XX:MaxPermSize=1024m sachant que j'ai 2GB dans la ram mais il y a toujours le même problème!!
    En attendant une solution à ce probleme jai mis un cron tab qui redemare le server chaque 4h.

    Je recherche toujours la solution
    ===================================
    ===Accroche ta charrue à l'Open source===
    ===================================

  5. #5
    Membre actif Avatar de aperrin
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 221
    Points : 272
    Points
    272
    Par défaut
    Après plusieurs recherches j'ai trouvé ce poste qui explique le mécanisme de déploiement à chaud :
    Les mécanismes de déploiement à chaud ou d'interception impliquent généralement la génération de classes (.class) par des bibliotheques telle asm, cglib. Tout ces nouveaux objets sont instanciés dans une zone spéciale de la JVM, la mémoire permanente, PermGen. Apres plusieurs utilisations, ces mécanisment peuvent provoquer un remplissage complet de cette zone et provoquer des erreurs du type PermGen Out of Space. Deux solutions:

    * augmenter cette zone avec les parametres -XXermSize -XX:MaxPermSize, mais cela reste un pansement, tôt ou tard, la PermGen sera pleine
    * permettre à la JVM d'effectuer des déchargements et du nettoyage de ces objets: -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled

    Issu du post suivant :

    http://www.developpez.net/forums/d42...ation-memoire/
    En essayant continuellement, on finit par réussir. Donc plus ça rate, plus on a de chances que ça marche !

  6. #6
    Membre averti Avatar de liquideshark
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2006
    Messages : 347
    Points : 325
    Points
    325
    Par défaut
    Citation Envoyé par aperrin Voir le message
    Après plusieurs recherches j'ai trouvé ce poste qui explique le mécanisme de déploiement à chaud :
    Les mécanismes de déploiement à chaud ou d'interception impliquent généralement la génération de classes (.class) par des bibliotheques telle asm, cglib. Tout ces nouveaux objets sont instanciés dans une zone spéciale de la JVM, la mémoire permanente, PermGen. Apres plusieurs utilisations, ces mécanisment peuvent provoquer un remplissage complet de cette zone et provoquer des erreurs du type PermGen Out of Space. Deux solutions:

    * augmenter cette zone avec les parametres -XXermSize -XX:MaxPermSize, mais cela reste un pansement, tôt ou tard, la PermGen sera pleine
    * permettre à la JVM d'effectuer des déchargements et du nettoyage de ces objets: -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled

    Issu du post suivant :

    http://www.developpez.net/forums/d42...ation-memoire/
    Super merci j'ai pris note. ca devrais regler mon problème
    ===================================
    ===Accroche ta charrue à l'Open source===
    ===================================

  7. #7
    Membre actif Avatar de aperrin
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 221
    Points : 272
    Points
    272
    Par défaut
    Cela étant je suis assez d'accord avec les post du dessus, a savoir de rechercher la (les) cause(s) qui ont abouties à ce problème et d'y remédier.
    En essayant continuellement, on finit par réussir. Donc plus ça rate, plus on a de chances que ça marche !

  8. #8
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 143
    Points : 157
    Points
    157
    Par défaut
    Oui, ce que dit aperrin est 100% le problème. Je parlais d'Hibernate et Spring, par exemple, car ces librairies utilisent CGlib pour générer du code à la volée (attention, ce n'est pas toujours vrai, cela dépend de votre config).
    Mais si vous avez des versions stables de ces librairies, vous ne devriez pas avoir de problème, et un MaxPermSize de 1 giga c'est absolument énorme.
    Bref vous devriez regarder vos 7 applications plus en détail, il y en a une qui doit utiliser ce type de mécanisme d'une manière complètement folle... Vous pourriez les isoler une à une (en mettant un deuxième Tomcat, avec un Apache devant pour load balancer entre vos deux Tomcat). Ainsi vous verriez laquelle a un souci.
    Julien Dubois

    http://www.ippon.fr

  9. #9
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Erreur de saisie
    Citation Envoyé par liquideshark Voir le message
    Saut tout le monde,

    J'ai un serveur Tomcat 6.0.16. j'ai dessus environs 7 applications et de temps en temps il me genere cette exeption
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Horrible Exception: java.lang.OutOfMemoryError: PermGen space
    sur la page web.
    J'ai essayé de palier au probléme en inscrivant dans le catalina.bat en inscrivant Avec 2G0 sur le serveur

    Merci pour votre aide
    Je pense que :
    ne peut marcher.
    Utiliser plutôt :
    Parceque 1Ko, c'est un peut juste.

Discussions similaires

  1. Erreur "java.lang.OutOfMemoryError: PermGen space"
    Par Fennec. dans le forum Autres
    Réponses: 1
    Dernier message: 16/12/2010, 23h10
  2. Réponses: 0
    Dernier message: 15/10/2010, 15h01
  3. Réponses: 6
    Dernier message: 28/10/2009, 13h48
  4. java.lang.OutOfMemoryError: PermGen space
    Par john_wili dans le forum Tomcat et TomEE
    Réponses: 9
    Dernier message: 11/04/2009, 19h23
  5. java.lang.OutOfMemoryError: PermGen space
    Par LGnord dans le forum Langage
    Réponses: 15
    Dernier message: 13/11/2007, 18h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo