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 :

[Tomcat 5] Out Of Memory


Sujet :

Tomcat et TomEE Java

  1. #1
    Yaz
    Yaz est déconnecté
    Nouveau membre du Club
    Inscrit en
    Avril 2002
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 56
    Points : 36
    Points
    36
    Par défaut [Tomcat 5] Out Of Memory
    Bonjour,

    j'ai une appli java qui tourne sur le serveur Tomcat 5 et j'ai de temps à autre des OutOfMemory.

    Auriez-vous des idées pour résoudre ce problème ou pour identifier l'origine du problème ?

    Merci pour votre aide

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2005
    Messages : 55
    Points : 60
    Points
    60
    Par défaut
    L'activité de déploiement et de repli (deploy/undeploy) conduit à terme à un java.lang.OutOfMemory : Permgen Space
    Il faut savoir qu'il n'y a pas grand chose à faire dans ce cas...

    Le bug est profond:
    Très grossièrement, si tu utilises dans ton application web des librairies externes qui font du chargement dynamique de classes (CGLIB, hibernate (fatal avec lazy=false), ....) et que tu la repli(undeploy), l'URLClassLoader de tomcat gardera les références sur les objets qui ont été chargés dynamiquement durant l'execution de l'appli ce qui empéche le ramasse-miette de les supprimer.

    il y a cependant des palliatifs:
    Le premier c'est d'utiliser un profiler et de délibérer manuellement les objets devant l'être.

    Le second, mais alors c'est vraiment du bricolage c'est d'augmenter la mémoire allouée au permgen de la JVM de Tomcat en ajoutant -XX:MaxPermSize=256M aux options de démarrage dans catalina.sh .Attention car cela crée des ralentissements, et ca ne fait que reporter le problème.

    Le troisième, si vous utilisez Tomcat en production, il est indispensable de repérer les applications qui bougent (beaucoup de cycles deploy/undeploy) et des les isoler dans une seconde instance de Tomcat dite "de test"... (c'est une politique genre debian) car il est possible de monter sur une même machine deux tomcat associées à deux JVM indépendantes, cela se fait en manipulant entre autre la variable CATALINA_BASE (et non pas CATALINA_HOME) si tu es sous Linux...

    En dehors de tout ceci, certaines librairies tel que la CGLIB comportent des fuites de mémoires reconnues, c'est pour ces raisons que des framework comme Spring ou Hibernate ont rendu l'utilisation de la CGLIB optionnel. (à noter qu'hibernate à eu du mal à rompre ses dépendances envers la CGLIB)

    Des outils comme jconsole sont assez utiles pour garder un oeil sur l'incrémentation du permgen jusqu'a ce qu'il atteigne sa valeur critique, et ça permet de mettre le doigt sur le problème (sans le résoudre)...

    Essaye de faire tourner ton appli avec d'autres conteneurs de servlets, pour voir si le problème persiste...

    bon courage...

  3. #3
    Yaz
    Yaz est déconnecté
    Nouveau membre du Club
    Inscrit en
    Avril 2002
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    Merci pour ta super réponse ! Bonne journée

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Points : 163
    Points
    163
    Par défaut
    Bonjour,

    Est ce que tu pourrais être plus précis concernant l'utilisation de CATALINA_HOME stp
    Citation Envoyé par TonioLeRital
    il est possible de monter sur une même machine deux tomcat associées à deux JVM indépendantes, cela se fait en manipulant entre autre la variable CATALINA_BASE (et non pas CATALINA_HOME) si tu es sous Linux...
    On m'a demandé dernièrement comment faire pour utiliser un Tomcat, avec deux applis ou chaque appli s'execute dans une JVM indépendante ?
    Est ce que c'est possible ? Ou est ce qu'il faut deux tomcat ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2005
    Messages : 55
    Points : 60
    Points
    60
    Par défaut
    Bonjour,

    Citation Envoyé par a_defanti
    On m'a demandé dernièrement comment faire pour utiliser un Tomcat, avec deux applis ou chaque appli s'execute dans une JVM indépendante ?
    Est ce que c'est possible ? Ou est ce qu'il faut deux tomcat ?
    Avant toutes choses, sous quel OS es-tu car je l'ai déja fait sous Linux (debian et fedora), mais jamais sous windows.

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Points : 163
    Points
    163
    Par défaut
    Oui l'OS est Linux.

    Par contre suite à la demande qui m'a été faite, je ne sais pas quelle est la différence entre :
    _utiliser un Tomcat, avec deux applis ou chaque appli s'execute dans une JVM indépendante
    _utiliser deux tomcat avec chacun une appli

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2005
    Messages : 55
    Points : 60
    Points
    60
    Par défaut
    Salut,
    Citation Envoyé par a_defanti
    _utiliser un Tomcat, avec deux applis ou chaque appli s'execute dans une JVM indépendante
    _utiliser deux tomcat avec chacun une appli
    Tomcat étant un conteneur d'applications dont la gestion des applications est géree par le mécanisme de chargement dynamique de classes (c'est le principe des plugins qui apportent des fonctionnalités supplémentaires à une application sans la redemarrer), on perdrait donc l'intérêt d'utiliser ce genre de conteneurs si les applications hebergées lancaient des processus (JVM) indépendants.
    Donc configurer 2 instances de tomcat ne revient pas à installer deux tomcats complets dans deux repertoires différents, mais à lancer deux JVM de tomcat qui coexistent sur le même serveur mais dont les ports d'attaque sont différents...(C'est comme quand tu ouvres deux IDE eclipse : bien qu'il n'y ait qu'un seul eclipse d'installé sur ta machine tu constates qu'avec ps -ax | grep eclipse ) il existe dans ta liste des processus 2 processus java (2 JVM) .)
    Cette approche me semble donc conceptuellement erronée...

    Voici un descriptif que j'ai rédigé pour installer deux instances de tomcat: j'y inclu aussi les modifications du mod_jk, l'installation d'un manager, etc... des infos que tu pourras sauter(surtout pour le mod_jk si tu n'as pas d'apache pluggé à tomcat)
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    ###########################################################################
    #### Installation de plusieurs instance de tomcat sur une seule machine.###
    ###########################################################################
     
    #-----------------------------------------------------
    #Soit $CATALINA_HOME le répertoire de base de tomcat.
    #------------------------------------------------------
     
    #S'assurer que $CATALINE_HOME et que $JAVA_HOME existe
     
    mkdir $CATALINA_HOME/otherInstances
    mkdir $CATALINA_HOME/otherInstances/tomcat2
    mkdir $CATALINA_HOME/otherInstances/tomcat2/webapps
    mkdir $CATALINA_HOME/otherInstances/tomcat2/logs
    mkdir $CATALINA_HOME/otherInstances/tomcat2/temp
    mkdir $CATALINA_HOME/otherInstances/tomcat2/server
    mkdir $CATALINA_HOME/otherInstances/tomcat2/server/webapps
    mkdir $CATALINA_HOME/otherInstances/tomcat2/work
     
    #Copier le contenu du repertoire conf de $CATALINA_HOME dans le répertoire ..../tomcat2/conf
     
    cd $CATALINA_HOME
    cp -R conf otherInstances/tomcat2/
    cp -R webapps/ROOT/ otherInstances/tomcat2/webapps/
     
    #Editer le fichier .../tomcat2/conf/server.xml : 
    1) Incrémenter de 100 la valeur du port d'arrêt du server (généralement on passe de 8005 à 8105)
    2) Commentez le connecteur HTTP : <Connector port="8080"....>
    3) Augmenter de 100 le port du connecteur AJP1.3. (généralement on passe de 8009 à 8109)
    4) Dans le host de votre choix (localhost par défaut) mettre à jour appBase="...../tomcat2/webapps/"
     
     
    #Editer le fichier workers.properties (dans $CATALINA_HOME/conf/jk) et rajouter :
    worker.list=tomcat2
    worker.tomcat2.port=8109
    worker.tomcat2.host=localhost
    worker.tomcat2.type=ajp13
     
     
    ##################################################
    ###Installation d'un manager pour cette instance #
    #################################################
     
    Editer le fichier mod_jk.conf (présent dans le sous-repertoire conf ou conf/jk de $CATALINA_HOME) et rajouter:
    Jkmount /manager2/* tomcat2
     
    #Copier le répertoire $CATALINA_HOME/server/webapps/manager dans ......./tomcat2/server/webapps/manager (le nom du rep. manager doit être remplacer par manager2)
    cp -R $CATALINA_HOME/server/webapps/manager $CATALINA_HOME/otherInstances/tomcat2/server/webapps/manager
     
    #Copier le fichier manager.xml de $CATALINA_HOME/conf/Catalina/localhost dans ...../tomcat2/conf/Catalina/localhost/manager2.xml
    cp $CATALINA_HOME/conf/Catalina/localhost/manager.xml $CATALINA_HOME/otherInstances/tomcat2/conf/Catalina/localhost/manager2.xml
     
    #Editer le fichier nouvellement copié et mettre à jour docBase="../server/webapps/manager2""
    (Le manager de la nouvelle instance de Tomcat sera accessible depuis l'url http://monNomDeDomaine/manager2/html)
     
    ############################################
    ### Script de démarrage de l'instance #####
    ############################################
     
    #Créer un script de démarrage et d'arrêt de la deuxième instance de tomcat (tomcat2).
     
    #!/bin/bash
    #SCRIPT A PARFAIRE!!!
    export JAVA_HOME="/usr/local/j2sdk"
    export CATALINA_HOME="/usr/local/tomcat"
    export CATALINA_BASE="$CATALINA_HOME/otherInstances/tomcat2"
     
    case "$1" in
    start)
            if [ -f $CATALINA_HOME/bin/startup.sh ];
                    then
                    echo $"Starting Tomcat2..."
                    su -l wwwadm -c "(export JAVA_HOME=/usr/local/j2sdk; export CATALINA_HOME=/usr/local/tomcat; export CATALINA_BASE=/usr/local/tomcat/otherInstances/tomcat2; /usr/local/tomcat/bin/startup.sh)"
             fi
             ;;
     
    stop)
            if [ -f $CATALINA_HOME/bin/shutdown.sh ];
                    then
                    echo $"Stopping Tomcat2..."
                    su -l wwwadm -c "(export JAVA_HOME=/usr/local/j2sdk; export CATALINA_HOME=/usr/local/tomcat; export CATALINA_BASE=/usr/local/tomcat/otherInstances/tomcat2; /usr/local/tomcat/bin/shutdown.sh)"
             fi
             ;;
     
    *)
             echo $"Usage: $0 {start|stop}"
            echo Usage : $0 "{start | stop}"
            ;;
    esac
     
     
    - Faire un apache graceful (pour le rafraichissement du mod_jk.conf).
    - Faire un tomcat2 start. (je propose de mettre le script tomcat2 dans /etc/init.d et l'inclure au systeme V via chkconfig).

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Points : 163
    Points
    163
    Par défaut
    Merci pour ta réponse très complète.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2005
    Messages : 55
    Points : 60
    Points
    60
    Par défaut Enfin la solution définitive, enfin la nième solution definitive...
    Je viens de trouver une solution alternative qui est bien meilleur que toutes les autres...
    J'ai fait mes tests en faisant tourner Tomcat sur une JVM d'IBM Version 5.0, et le problème se volatise: qui plus est elle est nettement plus rapide (visiblement leur implémentation du JIT ou du GC est plus optimisé que chez SUN...)

    Sous linux, il suffit simplement de faire pointer la variable $JAVA_HOME vers le SDK d'IBM et de lancer tomcat avec le catalina.sh start (ou startup.sh) classique...Evidemment cela fonctionne également avec Jonas, JBoss...

    Si tout se passe bien ps -ax liste un processus java avec le chemin absolu de la JVM d'ibm et non plus celle de sun, donc si ce n'est pas le cas c'est que vous vous êtes planté dans la démarche...

    Quelques chiffres :
    Tomcat lève un permgen space au bout de 5 deploy/undeploy de mon appli sous une JVM de SUN tandis que sous IBM, j'en suis à 32, et toujours pas de problème, je n'ai pas encore cherché d'outil de monitoring de mémoire avec IBM (l'équivalent de jconsole pour sun), mais les résultats sont tout de même là!

    Avant d'incriminer la JVM de SUN je compte sur vous pour faire des tests et me dire ce qu'il en retourne!!!

    Vous constaterez que l'option -XX:maxPermSize ne fait pas parti des spécifications d'une JVM et que donc cette option n'est pas reconnue par les JVM de IBM et de BEA

    a+

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 117
    Points : 95
    Points
    95
    Par défaut
    Bonjour à tous,

    j'ai un serveur Debian avec :
    tomcat 5.0.28
    jvm 1.4.2_04

    j'ai des out.memory, je cherche un outil capable de voir la charge memoire et un autre pour faire des stats de connexions pour le tomcat.
    JConsole est uniquement pour la version 5 de java ?

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2005
    Messages : 55
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par mediateur59
    Bonjour à tous,

    j'ai un serveur Debian avec :
    tomcat 5.0.28
    jvm 1.4.2_04

    j'ai des out.memory, je cherche un outil capable de voir la charge memoire et un autre pour faire des stats de connexions pour le tomcat.
    JConsole est uniquement pour la version 5 de java ?
    Pour les tests de stats de connexion, il y a l'outil libre Analog dispo sous Linux, Windows et Max...

    Pour le monitoring de la mémoire, avant tout si tu as un problème de Permgen Space je te conseille de changer ta JVM de SUN par celle d'IBM ou de BEA(Jrockit)...

    Sinon pour répondre tout de même à ta question, il existe l'outil JProfiler, il y a aussi un outil embarqué avec la JVM de BEA qui s'appelle Mercury Profiler...
    Si c'est un problème de la taille de la pile (Out.ofMemory:Heap Size) sous Java passe le paramètre -Xmx512m à ta JVM (c'est à rajouter au script catalina.sh dans la partie JAVA_OPTS="....." et redémarre tomcat )

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 117
    Points : 95
    Points
    95
    Par défaut
    Je vais regarder à tous ça merci
    Dis moi Analog est utilisable avec tomcat ?
    je voudrais distingué la charge de plusieur applicatif ou contexte
    est ce possible avec cette outil ? je n'ai pas pu repondre à ma question en lisant sur le site...

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2005
    Messages : 55
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par mediateur59
    Je vais regarder à tous ça merci
    Dis moi Analog est utilisable avec tomcat ?
    je voudrais distingué la charge de plusieur applicatif ou contexte
    est ce possible avec cette outil ? je n'ai pas pu repondre à ma question en lisant sur le site...
    Analog est un outil d'analyse de journaux (log) HTTP (get, put...), donc ca devrait marcher pour chacune de tes appli si tu génére un fichier de log par appli.
    Il faut donc configurer Tomcat pour générer un fichier de log HTTP pour chaque application : c'est faisable en bricolant le server.xml (ou context.xml de chaque appli) avec des <Logger ...>, je l'ai déja fait mais ça remonte à belle lurette...

    Sinon dans ma config actuelle, j' utilise les logs d'accés HTTP propre à mes applis que mod_jk crée automatiquement (donc via apache)... mais ce serait bête d'installer Apache et mod_jk uniquement pour avoir un fichier de log à faire fonctionner avec Analog. Par conséquent, tu as plutot intérêt à étudier comment créer un fichier de log HTTP avec Tomcat... C'est pas sorcier si ma mémoire est bonne (ceci dit je l'avais fait avec Tomcat 5.0 et non 5.5).

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 117
    Points : 95
    Points
    95
    Par défaut
    Ok je te remercie je vais voir pour configurer cela :-p

  15. #15
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Points : 15
    Points
    15
    Par défaut [Tomcat 5] Out Of Memory
    Bonjour à tous,

    Je dois reprendre une application j2EE utilisant tomcat/hibernate/Eclipse/ant/mySQL.
    Cette application fonctionne déjà sur d'autres postes. Cependant j'ai un problème "Out Of Memory JAVA HEAP SPACE".
    J'ai rajouté la ligne "-Xmx1024m -Xms1024m" lors du lancement de l'application.
    Maintenant je peux faire tourner l'appli une fois mais après j'ai encore le même problème.
    Augmenter la mémoire n'a rien changé

    Est-ce que quelqu'un pourrait m'aider? Merci d'avance.

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2005
    Messages : 55
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par nathalie2266
    Bonjour à tous,

    Je dois reprendre une application j2EE utilisant tomcat/hibernate/Eclipse/ant/mySQL.
    Cette application fonctionne déjà sur d'autres postes. Cependant j'ai un problème "Out Of Memory JAVA HEAP SPACE".
    J'ai rajouté la ligne "-Xmx1024m -Xms1024m" lors du lancement de l'application.
    Maintenant je peux faire tourner l'appli une fois mais après j'ai encore le même problème.
    Augmenter la mémoire n'a rien changé

    Est-ce que quelqu'un pourrait m'aider? Merci d'avance.
    Si tu as correctement positionner les paramètres -Xmx1024m ..., et que tu continues à avoir le même problème, c'est que ton appli (ou une librairie tierce que tu utilises) comporte une fuite de mémoire (Hibernate utilisait la CGLIB qui comportait une fuite identifiée). Il faudrait que tu utilises jconsole (outil packagé avec le JDK1.5 de SUN) pour déceler une quelconque fuite de mémoire.
    .

  17. #17
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Points : 15
    Points
    15
    Par défaut [Tomcat 5] Out Of Memory
    Merci pour ta réponse ! je vais essayer. A priori il y aurait bien une fuite de mémoire quelque part...

  18. #18
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par TonioLeRital
    certaines librairies tel que la CGLIB comportent des fuites de mémoires reconnues, c'est pour ces raisons que des framework comme Spring ou Hibernate ont rendu l'utilisation de la CGLIB optionnel. (à noter qu'hibernate à eu du mal à rompre ses dépendances envers la CGLIB)
    Comment indiquer à Hibernate de ne pas utiliser la CGLIB afin de ne plus avoir de fuite mémoire ?

    Merci d'avance.
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2005
    Messages : 55
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par Mister Nono
    Comment indiquer à Hibernate de ne pas utiliser la CGLIB afin de ne plus avoir de fuite mémoire ?

    Merci d'avance.
    il y a tout d'abord le paramètre suivant :

    hibernate.cglib.use_reflection_optimizer=false
    ce qui force hibernate à utiliser le mécanisme de proxy du JDK (api reflectivité) plutot que celui de la CGlib.

    Mais de ce que j'avais pratiqué cela ne suffisait pas car dans les version 2 et 3.0 il y a de la dépendance "en dur" vers la CGLIB néanmoins les versions futures devait pouvoir s'en affranchir... je n'ais pas vérifié depuis... mais ça sent mauvais!!!

    As-tu essayé de changer de JVM pour voir si cela résoud tes problèmes...
    j'ai lu assez souvent que la JVM de BEA est plus optimisée pour un usage de type serveur, mais personnellement celle d'IBM arrive largement en premier sur mes tests de montée en charge.

    voilà,
    tiens moi au courant.
    a+

  20. #20
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Merci pour la réponse.

    J'ai donc ajouté ce tag dans le fichier de configuration de Hibernate :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <property name="hibernate.cglib.use_reflection_optimizer">false</property>
    Ce qui m'étonne, c'est que j'utilise Hibernate 3 et que ce problème n'est pas été réglé par rapport à la version 2.

    Pourquoi ?

    Merci.
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

Discussions similaires

  1. [XStream][String]out of memory
    Par Invité dans le forum Persistance des données
    Réponses: 8
    Dernier message: 10/01/2006, 14h52
  2. [C++] [gcc] out of memory
    Par fxp17 dans le forum GCC
    Réponses: 5
    Dernier message: 06/01/2006, 10h29
  3. [pb mémoire] out of memory d'eclipse
    Par Casp dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 12/05/2005, 16h39
  4. Out of memory
    Par shurato dans le forum ANT
    Réponses: 1
    Dernier message: 10/11/2004, 16h19
  5. [JBuilder 8] Out of memory problem ...
    Par keros dans le forum JBuilder
    Réponses: 2
    Dernier message: 08/09/2003, 19h03

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