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

Développement Web en Java Discussion :

Problème fuite mémoire


Sujet :

Développement Web en Java

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut Problème fuite mémoire
    Bonjour,

    J'ai développé des web services REST avec JAX-RS, Spring, BoneCP et une BDD Postgres, avec un serveur Jetty.

    Actuellement, je me rends compte que je dois avoir une fuite mémoire car mon process java prend de plus en plus de RAM, et fini par faire planter le serveur.

    J'ai cherché comment analyser le problème, et j'ai donc trouvé l'outil "jmap" qui me génère un dump, et le plugin MAT d'Eclipse pour l’analyser.

    MAT me ressort 2 erreurs :
    The classloader/component "org.eclipse.jetty.webapp.WebAppClassLoader @ 0xfd5711f0" occupies 22 108 992 (53,97%) bytes. The memory is accumulated in one instance of "java.util.concurrent.ConcurrentHashMap$Segment[]" loaded by "<system class loader>".
    et

    The class "java.lang.ref.Finalizer", loaded by "<system class loader>", occupies 7 015 640 (17,12%) bytes.

    Keywords
    java.lang.ref.Finalizer
    J'avoue que je n'y comprend pas grand chose, quelqu'un pourrait-il m'aider ?

    D'avance merci

    Vince

  2. #2
    En attente de confirmation mail
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Octobre 2010
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 501
    Points : 1 060
    Points
    1 060
    Par défaut
    Bonjour,

    La démarche est bonne mais c'est peu d'informations pour qu'on puisse vous aider.

    Le rapport généré par MAT est en HTML normalement.
    Pouvez-vous l'uploader quelque-part pour qu'on puisse le regarder en détail ?

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    ok, mais je ne trouve pas le rapport HTML.
    où puis-je le trouver?
    Merci

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut contenu
    Je n'arrive pas à sortir le contenu HTML avec les graphs,

    Mais j'ai pu exporter ceci- :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-type" content="text/html;charset=UTF-8"><title>Export</title><link rel="stylesheet" type="text/css" href="styles.css"><script src="code.js" type="text/javascript"></script></head><body onload="preparepage();"><input type="hidden" id="imageBase" value="img/"><div id="header"><ul><li><a href="#">Export</a></li></ul></div>
    <h5><a href="#" onclick="hide(this, 'exp1'); return false;" title="hide / unhide"><img src="img/opened.gif" alt=""></a> <a name="1">Export</a></h5><div id="exp1"><table class="result"><thead><tr><th>Class Name</th><th>Shallow Heap</th><th>Retained Heap</th><th>Percentage</th></tr></thead><tbody class="tree"><tr><td><img src="icons/i0.gif" alt=""><ul><li><a href="mat://object/0xfd5711f0">org.eclipse.jetty.webapp.WebAppClassLoader @ 0xfd5711f0</a> &raquo;</li></ul></td><td align="right">168</td><td align="right">22*108*992</td><td align="right">53,97%</td></tr><tr><td><img src="icons/i1.gif" alt=""><ul><li><a href="mat://object/0xb0047950">class java.lang.ref.Finalizer @ 0xb0047950</a> <strong>System Class, Native Stack</strong> &raquo;</li></ul></td><td align="right">24</td><td align="right">7*015*640</td><td align="right">17,12%</td></tr><tr><td><img src="icons/i2.gif" alt=""><ul><li><a href="mat://object/0xfd805ec0">org.eclipse.jetty.webapp.WebAppContext @ 0xfd805ec0</a> &raquo;</li></ul></td><td align="right">504</td><td align="right">1*818*648</td><td align="right">4,44%</td></tr><tr><td><img src="icons/i2.gif" alt=""><ul><li><a href="mat://object/0xfd806478">org.eclipse.jetty.servlet.ServletHolder @ 0xfd806478</a> &raquo;</li></ul></td><td align="right">208</td><td align="right">1*196*448</td><td align="right">2,92%</td></tr><tr><td><img src="icons/i2.gif" alt=""><ul><li><a href="mat://object/0xfd5799a0">com.sun.jmx.mbeanserver.JmxMBeanServer @ 0xfd5799a0</a> &raquo;</li></ul></td><td align="right">64</td><td align="right">801*400</td><td align="right">1,96%</td></tr><tr><td><img src="icons/i0.gif" alt=""><ul><li><a href="mat://object/0xfd571248">org.eclipse.jetty.start.Classpath$Loader @ 0xfd571248</a> &raquo;</li></ul></td><td align="right">136</td><td align="right">343*280</td><td align="right">0,84%</td></tr><tr><td><img src="icons/i1.gif" alt=""><ul><li><a href="mat://object/0xb07322d8">class java.util.ResourceBundle @ 0xb07322d8</a> <strong>System Class</strong> &raquo;</li></ul></td><td align="right">40</td><td align="right">339*328</td><td align="right">0,83%</td></tr><tr><td><img src="icons/i2.gif" alt=""><ul><li><a href="mat://object/0xfd65cdd0">org.eclipse.jetty.webapp.WebAppContext @ 0xfd65cdd0</a> &raquo;</li></ul></td><td align="right">504</td><td align="right">214*160</td><td align="right">0,52%</td></tr><tr><td><img src="icons/i2.gif" alt=""><ul><li><a href="mat://object/0xfda2b258">sun.net.www.protocol.jar.URLJarFile @ 0xfda2b258</a> &raquo;</li></ul></td><td align="right">112</td><td align="right">205*240</td><td align="right">0,50%</td></tr><tr><td><img src="icons/i2.gif" alt=""><ul><li><a href="mat://object/0xfd6f5510">java.util.jar.JarFile @ 0xfd6f5510</a> &raquo;</li></ul></td><td align="right">80</td><td align="right">199*016</td><td align="right">0,49%</td></tr><tr><td><img src="icons/i2.gif" alt=""><ul><li><a href="mat://object/0xfdc3dbc0">sun.net.www.protocol.jar.URLJarFile @ 0xfdc3dbc0</a> &raquo;</li></ul></td><td align="right">112</td><td align="right">198*424</td><td align="right">0,48%</td></tr><tr><td><img src="icons/i2.gif" alt=""><ul><li><a href="mat://object/0xfd637f58">java.util.jar.JarFile @ 0xfd637f58</a> &raquo;</li></ul></td><td align="right">80</td><td align="right">193*136</td><td align="right">0,47%</td></tr><tr><td><img src="icons/i2.gif" alt=""><ul><li><a href="mat://object/0xfd937790">sun.util.resources.TimeZoneNames @ 0xfd937790</a> &raquo;</li></ul></td><td align="right">72</td><td align="right">155*056</td><td align="right">0,38%</td></tr><tr><td><img src="icons/i1.gif" alt=""><ul><li><a href="mat://object/0xb077f030">class sun.text.ComposedCharIter @ 0xb077f030</a> <strong>System Class</strong> &raquo;</li></ul></td><td align="right">24</td><td align="right">149*488</td><td align="right">0,36%</td></tr><tr><td><img src="icons/i2.gif" alt=""><ul><li><a href="mat://object/0xfd622b10">org.eclipse.jetty.webapp.WebAppContext @ 0xfd622b10</a> &raquo;</li></ul></td><td align="right">504</td><td align="right">138*960</td><td align="right">0,34%</td></tr><tr><td><img src="icons/i2.gif" alt=""><ul><li><a href="mat://object/0xfd6b5288">java.util.jar.JarFile @ 0xfd6b5288</a> &raquo;</li></ul></td><td align="right">80</td><td align="right">129*976</td><td align="right">0,32%</td></tr><tr><td><img src="icons/i2.gif" alt=""><ul><li><a href="mat://object/0xfd9483e0">org.eclipse.jetty.webapp.WebAppContext @ 0xfd9483e0</a> &raquo;</li></ul></td><td align="right">504</td><td align="right">128*248</td><td align="right">0,31%</td></tr><tr><td><img src="icons/i2.gif" alt=""><ul><li><a href="mat://object/0xfd5b06e0">org.eclipse.jetty.webapp.WebAppContext @ 0xfd5b06e0</a> &raquo;</li></ul></td><td align="right">504</td><td align="right">127*856</td><td align="right">0,31%</td></tr><tr><td><img src="icons/i2.gif" alt=""><ul><li><a href="mat://object/0xfd78f7d8">org.eclipse.jetty.webapp.WebAppContext @ 0xfd78f7d8</a> &raquo;</li></ul></td><td align="right">504</td><td align="right">119*328</td><td align="right">0,29%</td></tr><tr><td><img src="icons/i3.gif" alt=""><ul><li><a href="mat://object/0xb0d46a60">class org.eclipse.jetty.http.MimeTypes @ 0xb0d46a60</a> &raquo;</li></ul></td><td align="right">432</td><td align="right">96*072</td><td align="right">0,23%</td></tr><tr><td><img src="icons/i2.gif" alt=""><ul><li><a href="mat://object/0xfda73150">sun.net.www.protocol.jar.URLJarFile @ 0xfda73150</a> &raquo;</li></ul></td><td align="right">112</td><td align="right">92*808</td><td align="right">0,23%</td></tr><tr><td><img src="icons/i2.gif" alt=""><ul><li><a href="mat://object/0xfd5d1f10">java.util.jar.JarFile @ 0xfd5d1f10</a> &raquo;</li></ul></td><td align="right">80</td><td align="right">83*824</td><td align="right">0,20%</td></tr><tr><td><img src="icons/i1.gif" alt=""><ul><li><a href="mat://object/0xb0aad530">class com.sun.org.apache.xerces.internal.util.XMLChar @ 0xb0aad530</a> <strong>System Class</strong> &raquo;</li></ul></td><td align="right">40</td><td align="right">65*600</td><td align="right">0,16%</td></tr><tr><td><img src="icons/i2.gif" alt=""><ul><li><a href="mat://object/0xfdc24ad0">sun.net.www.protocol.jar.URLJarFile @ 0xfdc24ad0</a> &raquo;</li></ul></td><td align="right">112</td><td align="right">59*328</td><td align="right">0,14%</td></tr><tr><td><img src="icons/i2.gif" alt=""><ul><li><a href="mat://object/0xfd603070">java.util.jar.JarFile @ 0xfd603070</a> &raquo;</li></ul></td><td align="right">80</td><td align="right">57*288</td><td align="right">0,14%</td></tr><tr><td><img src="icons/i1.gif" alt=""><ul><li><a href="mat://object/0xb0acedd0">class com.sun.org.apache.xerces.internal.util.EncodingMap @ 0xb0acedd0</a> <strong>System Class</strong> &raquo;</li></ul></td><td align="right">16</td><td align="right">54*232</td><td align="right">0,13%</td></tr><tr><td><img src="icons/i2.gif" alt=""><ul><li><a href="mat://object/0xfd7165f8">org.eclipse.jetty.xml.XmlParser @ 0xfd7165f8</a> &raquo;</li></ul></td><td align="right">72</td><td align="right">51*840</td><td align="right">0,13%</td></tr><tr class="totals"><td><img src="icons/i4.gif" alt=""><ul><li>Total: 27 of 12*090 entries</li></ul></td><td align="right"></td><td align="right"></td><td align="right"></td></tr></tbody></table></div><br><div id="footer"><div class="toc"><a href="toc.html">Table Of Contents</a></div><div class="mat">Created by <a href="http://www.eclipse.org/mat/" target="_blank">Eclipse Memory Analyzer</a></div></div>
    </body></html>

  5. #5
    Expert éminent sénior
    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
    Points : 48 804
    Points
    48 804
    Par défaut
    1) les Finalizer:
    ce sont des conteneur pour tous les objets implémentant finalize() et en attente d'être traité par le thread finalizer. Normalement cette liste devrait rester moyennement vide. Si elle se remplit c'est soit
    -> que tu supprime beaucoup d'objet implémentant Finalizer
    -> que ces méthodes finalize() sont trop lente
    -> une combinaison des deux
    Pour résoudre ça, regarder en détails ce que référencent ces finaliseur pour corriger la classe concernée. Il est rare d'avoir besoin d'implémenter finalize() et encore plus de faire du travail lent derrière => ce n'est pas normal
    (pour te donner une idée, en 7 ans de programmation java, je n'ai jamais eu besoin d'implémenter un finalize!)

    2) le classloader: le classloader référence toutes les classes chargée. Il faut étendre cette map pour trouver quelle(s) entrée(s) consomme(nt) beaucoup. Si une classe consomme de la mémoire c'est en général qu'elle a des champs statique contenant beaucoup de données.
    Pour résoudre ça: identifier les classes concernée et les champs concernés pour trouver le coupable.

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    Bonjour,

    Pour la méthode 'finalize', je ne l'utilise nulle part dans mon projet, donc je ne comprend pas.

    Pour le classeloader, désolé, mais je ne vois pas comment l'étendre, je suis novice en java

    Merci de votre aide

    Vince

  7. #7
    Expert éminent sénior
    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
    Points : 48 804
    Points
    48 804
    Par défaut
    Je parle pas de java mais ton outils d'analyse. Là t'as que le premier niveau de l'arbre. Faut naviguer dedans pour voir ce qui se passe. doit y avoir des peittes icones pour ça sur l'interface de l'outil

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    effectivement, il y a des icônes....

    je n'ai plus qu'à plonger dedans...

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/07/2011, 15h35
  2. Problème fuite mémoire
    Par scary dans le forum Débuter
    Réponses: 1
    Dernier message: 03/08/2010, 11h33
  3. problème fuite mémoire
    Par didoboy dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 29/07/2009, 11h46
  4. Problème fuite mémoire
    Par devconf77 dans le forum Windows
    Réponses: 12
    Dernier message: 04/10/2007, 20h45
  5. Problème fuite mémoire
    Par devconf77 dans le forum Windows
    Réponses: 3
    Dernier message: 30/08/2007, 18h33

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