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

Autres Java Discussion :

Erreur "java.lang.OutOfMemoryError: PermGen space"


Sujet :

Autres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 54
    Par défaut Erreur "java.lang.OutOfMemoryError: PermGen space"
    Bonjour a tous,

    voilà un bon moment que nous avons ce problème. j'ai parcourus
    pas mal de site web traitant de se problème.

    j'ai cru comprendre que le problème viendrai de la librairie CGLIB et que ce bug de fuite mémoire n'impacte que la jvm de sun.

    la solution trouvée étais de se passer de cette librairie, nous avons donc utilisé
    une version plus récente d'hibernate qui n'utilise plus CGLIB mais SLF4J

    petit hic, est que nous avons toujours des out of memory: Perm Gen

    on a un serveur windows 2003 + tomcat 6
    sur le tomcat il y a,
    - hudson
    - jforum
    - un web service fait maison
    - 2 application faite maison (spring hibernate)

    les libraires utilisées par ces 2 applications

    application 1 : écrite par un colègue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    activation.jar 
    commons-digester-1.8.jar
    dom4j-1.4.jar
    jta-1.1.jar
    slf4j-log4j12-1.5.11.jar
    antlr-2.7.6rc1.jar
    commons-fileupload-1.2.jar
    hibernate-3.3.2.jar
    log4j-1.2.1.jar
    spring.jar
    asm-3.0.5.jar
    commons-io-1.3.1.jar
    jakarta-tiles.jar
    mysql-connector-java-5.1.10-bin.jar
    standard-1.0.6.jar
    classes12.jar
    commons-lang-2.1.jar
    javassist-3.9.0.GA.jar
    quartz.jar
    commons-beanutils-1.7.0.jar
    commons-logging-1.1.1.jar
    jdom.jar                
    slf4j-api-1.5.11.jar
    commons-collections-3.1.jar  
    displaytag-1.1.jar
    jstl-1.0.2.jar
    slf4j-jdk14-1.5.11.jar
    application 2 : écrite par moi même

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    antlr-2.7.6.jar             
    dom4j-2.0.0.jar         
    log4j-1.2.15.jar          
    spring-context-2.5.6.jar              
    spring-webmvc-2.5.6.jar
    commons-beanutils-1.8.0.jar  
    dwr-2.0.6.jar          
    quartz-1.8.0.jar          
    spring-core-2.5.6.jar                 
    standard-1.1.2.jar
    commons-codec-1.4.jar        
    hibernate-3.3.2.jar     
    SimpleCaptcha-1.1.1.jar   
    spring-jdbc-2.5.6.jar                 
    tiles-api-2.0.6.jar
    commons-collections-3.2.jar  
    jakarta-oro-2.0.8.jar   
    slf4j-api-1.5.11.jar      
    spring-orm-2.5.6.jar                  
    tiles-core-2.0.6.jar
    commons-digester-2.0.jar     
    javamail-1.4.3.jar      
    slf4j-jdk14-1.5.11.jar    
    spring-security-acl-2.0.5.jar         
    tiles-jsp-2.0.6.jar
    commons-io-1.3.2.jar         
    javassist-3.9.0.GA.jar  
    slf4j-log4j12-1.5.11.jar  
    spring-security-core-2.0.5.jar
    commons-logging-1.0.4.jar    
    jdom-1.1.1.jar          
    spring-2.5.6.jar          
    spring-security-core-tiger-2.0.5.jar
    commons-validator-1.3.1.jar  
    jstl-1.1.2.jar          
    spring-aop-2.5.6.jar      
    spring-security-taglibs-2.0.5.jar
    displaytag-1.1.jar           
    jta-1.1.jar             
    spring-beans-2.5.6.jar    
    spring-web-2.5.6.jar
    j'ai analysé mon application avec eclipse TPTP

    et voici se qu'il en resort

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class              package                instance               size (byte)
    byte[]        (default package)           1.120                     18.184.872
    Field             com.mysql.jdbc           222                      31.968
    char[]           (defaul package)           249                      31.920
    merci d'avance pour votre aide

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par Fennec. Voir le message
    une version plus récente d'hibernate qui n'utilise plus CGLIB mais SLF4J
    Heuu, CGLIB permet l'instrumentation de classe. SLF4J c'est une api de logging. Ca n'a absolument rien à voir.

    Sinon, la première chose à vérifier, c'est si l'application n'a pas simplement effectivement besoin de plus de mémoire, bref augmenter le permgen pour voir si il n'est pas juste trop petit! Je fais tourner du hibernate au boulot avec des jvm de sun, je n'ai un dépassement du permgen que lors de arrêt/ rédémarrage intempestifs de la webapp -> on a simplement établit qu'on ne ferait pas de hot deploy et que toute mise à jour de la webapp impliquerais un arret de 5 minutes,

    Et si c'est après de multiple deploy que viens le problème, il y a beaucoup de chose qui peuvent provoquer un classloader leak qui est la causse de cette erreur permgen, faut pas toujurs accuser CGLIB (d'autant que, si ma mémoire est bonne, ca fait plus de 2 ans qu'ils ont corrigé le problème dans leur lib)

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/10/2010, 15h01
  2. Réponses: 6
    Dernier message: 28/10/2009, 13h48
  3. java.lang.OutOfMemoryError: PermGen space
    Par john_wili dans le forum Tomcat et TomEE
    Réponses: 9
    Dernier message: 11/04/2009, 19h23
  4. Horrible Exception: java.lang.OutOfMemoryError: PermGen space
    Par liquideshark dans le forum Tomcat et TomEE
    Réponses: 8
    Dernier message: 06/01/2009, 10h54
  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