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

Java Discussion :

Detection de fuites mémoires et Heapspace


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de NizarK
    Inscrit en
    Mars 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 189
    Par défaut Detection de fuites mémoires et Heapspace
    Salut à tous !

    Je souhaite faire des tests de charge sur mon apllication.
    Je voudrais lors de ces tests contrôler s'il ya d'éventuelles fuites mémoires dans mon application ...

    Connaissez vous un moyen propre de le faire qu'il avec du code ou en utilisant des outils externes..

    Je suis sous linux fedora 7

    Merci à tous les gc qui voudront répondre.

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu peux utiliser VisualVM, qui est inclut dans le tout dernier JDK de Sun


    a++

  3. #3
    Membre confirmé Avatar de NizarK
    Inscrit en
    Mars 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 189
    Par défaut Visual VM et Heapspace
    Cet outil est excellent ! merci !

    Pourrais je avoir une explication simple ( pas trop ) de ce qu'est le heap space.

    Il nous a fait pas mal de soucis surtout avec tomcat , soucis qu'on a résolu en augmentant le heapspace de la jvm. Mais on ne sait pas vraiment ce que c'est.

    En plus on m a parlé récemment du fait que l'astuce n'est pas d'augmenter le heapspace mais de trouver un heapspace optimal .

    Quelqu'un peut il m'éclairer

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par NizarK Voir le message
    Pourrais je avoir une explication simple ( pas trop ) de ce qu'est le heap space.
    Le heap space correspond simplement à l'espace mémoire dans lequel les seront placé les objets de ton application...

    Citation Envoyé par NizarK Voir le message
    Il nous a fait pas mal de soucis surtout avec tomcat , soucis qu'on a résolu en augmentant le heapspace de la jvm. Mais on ne sait pas vraiment ce que c'est.
    Il y a deux possibilités :
    • Soit l'application à besoin de beaucoup de mémoire, et il faut donc lui fournir un heapspace adapté.
    • Soit l'application use et abuse de variable dans des scopes à visibilité trop grande inutilement (variable static ou stocké dans la session ou le scope application...), et dans ce cas là il faut revoir la conception...



    Attention également à la libération des ressources systèmes (fichiers, socket, connection JDBC, etc.) qui doivent être fermé explicitement (et via un finally de préférence).


    a++

  5. #5
    Membre confirmé Avatar de NizarK
    Inscrit en
    Mars 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 189
    Par défaut
    Rien n'empeche donc, si mon application a besoin de beaucoup de mémoire, de lui donner par exemple la moité de la RAM ( soit par ex 1Go).

    Sinon est ce que le heap space et son augmentation a un rapport avec la charge du processeur.
    Car un développeur m' a raconté son expérience avec une application qui se plantait inexplicablement lorsqu'il ont augmenté trop le heap space qui lui était alloué . Après avoir analysé le comportement du système, il ont remarqué qu'au bout de quelques jours de fonctionnement la charge du processeur arrivait à 100% puis l'application plantait. D'après son analyse, ceci correspondrait au moment où le heapspace atteint sa valeur maximale.

    Jusqu'à quel point cette histoire est vraie ?? quelques explications ou un lien ne seraient pas de refus

    Merci adiGuba

  6. #6
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Si le heapspace indiqué est trop important. Lorsqu'il est rempli, il est possible que la mémoire se mette à swapper à fond, d'où une utilisation énorme du processeur et éventuellement plantage.

    S'il avait 1go de ram et qu'il a autorisé à un heap space de 900mo, c'est pas forcement le bon plan ^^

  7. #7
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par NizarK Voir le message
    Rien n'empeche donc, si mon application a besoin de beaucoup de mémoire, de lui donner par exemple la moité de la RAM ( soit par ex 1Go).
    Oui mais si le problème vient d'une mauvaise conception, cela ne permettra qu'à cacher le problème quelques temps...

    Citation Envoyé par NizarK Voir le message
    Sinon est ce que le heap space et son augmentation a un rapport avec la charge du processeur.
    Je ne pense pas...

    Par contre il faut savoir qu'avant de provoquer un OutOfMemory, le GC va tout tenter pour libérer un maximum d'objet, en forçant des full-GC assez couteux. Si tu arrives à la limite max de ton heapspace, il y a des chances que le GC bosse dur pour tenter d'éviter le plantage avant que cela ne soit inévitable...




    Si ton tomcat tourne sur Java 6 tu peux utiliser VisualVM pour suivre la quantité d'instance par type d'objet, comme sur ce screenshot :


    Il est intéressant de voir quels sont les classes qui apparaissent en premier...


    a++

Discussions similaires

  1. Outils pour detecter les fuite de mémoire
    Par sese12345 dans le forum Windows Mobile
    Réponses: 2
    Dernier message: 31/03/2010, 10h10
  2. [tomcat][memoire] java.net.URL et fuite mémoire
    Par Seiya dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 09/03/2009, 10h41
  3. Detecter les fuites mémoire
    Par tazer dans le forum Visual C++
    Réponses: 6
    Dernier message: 29/02/2008, 14h26
  4. [SWT]SWT et fuite mémoire(ou pas)
    Par menuge dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 22/06/2004, 21h40
  5. [debug] fuites mémoires
    Par tmonjalo dans le forum C
    Réponses: 3
    Dernier message: 28/07/2003, 17h20

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