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 :

[ memoire ] Java Heap Space


Sujet :

Java

  1. #1
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut [ memoire ] Java Heap Space
    Salut,

    J'ai un problème avec une application swing. C'est une application très lourde car il y a des formulaires complexes et bien fournis avec des validateurs (jgoodies) et communication avec base de données oracle.

    Au bout d'un certain temps d'utilisation, l'application plante et ne veut plus ouvrir le moindre écran à part le dialogue affichant mes exceptions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.OutOfMemoryError: Java heap space
    J'ai constaté que l'application prend de la mémoire et ne la restitue pas forcément lors de la fermeture d'écrans.

    J'ai déjà une piste de travail mais, mes questions c'est :

    - Est-ce que ça vous est déjà arrivé, si oui, avez vous résolu le problème et d'où celà venait-il ?
    - Connaissez vous un outil pour analyser ce qui est utilisé par l'applic (objets instanciés, etc... un peu comme le débuggueur d'eclipse mais qui donnerai en permanence les infos sur ce qui est en mémoire).

    Merci
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  2. #2
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Tu peux utiliser le Profiler gratuit de NetBeans. Je developpe sous Eclipse mais j'utilise le Profiler de NetBeans.
    Romain Guy
    Android - Mon livre - Mon blog

  3. #3
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Merci, je vais faire ça, pour info j'ai créé un autre thread en rapport :

    http://www.developpez.net/forums/vie...535641#2535641
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  4. #4
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Ou alors j'ai pas besoin d'installer mes projets sous NetBeans ?
    Tu fais comment toi exactement ?
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  5. #5
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    J'ai fait d'autres tests en attendant et il s'avère que plusieurs de mes JFrame ne sont pas libérées. J'ai étendu finalize() pour contrôler ça.

    Ce qu'il se passe c'est que j'ouvre des JFrame à partir d'une autre JFrame. Elles sont indépendantes car le seul paramètre fourni par la frame parente est un ID et il n'y a aucunes données de retour (à part un objet global que je met à jour dans le contexte applicatif).

    Les objets non concernés par ces frames sont libérés.

    Je ne comprends rien... j'vois aucune raison.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  6. #6
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 122
    Points : 110
    Points
    110
    Par défaut
    vraiment bizarre, mais que fait le garbage collector?

  7. #7
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Une fuite memoire c'est facile a faire en Java. Tu peux peut etre utiliser des WeakReferences a certains endroits.

    Pour le profiler, lance le wizard, il te donnera une commande pour executer ton programme (des arguments pour la JVM). Je copie simplement ces arguments dans Eclipse et je lance le programme depuis Eclipse. Ensuite le profiler de NetBeans se connecte dessus et hop
    Romain Guy
    Android - Mon livre - Mon blog

  8. #8
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 122
    Points : 110
    Points
    110
    Par défaut
    Citation Envoyé par Gfx
    Une fuite memoire c'est facile a faire en Java.
    tu veux dire que la mémoire de la VM est comme une vielle incontinente

  9. #9
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    J'ai trouvé ! Hourra !
    J'ai réussi à utiliser le Profiler de Netbeans, merci Gfx.

    Le problème était que je crée des composants sur lesquels je met un listener. Puis je met ces composants dans un listener global (static) qui vie pendant toute la vie de la jvm. Ces composants ne sont donc jamais libérés vu que quand je ferme l'écran, les références sont conservées au moyen de ce listener. Ce qui explique que j'ai uniquement les JFrame qui utilisent ces composants qui ne finalizaient jamais.

    Je sais pas si je suis clair

    Il faut que je trouve un moyen pour faire autrement pour pouvoir garder ces composants et leur comportement.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  10. #10
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Ben comme j'ai dit, utilise des WeakReferences. Regarde ici par exemple : http://weblogs.java.net/blog/zixle/archive/2005/11/weakreferences.html
    Romain Guy
    Android - Mon livre - Mon blog

  11. #11
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Merci beaucoup, le problème est résolu !
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Info] Chargement image et Java heap space
    Par dazz_x dans le forum Langage
    Réponses: 9
    Dernier message: 11/09/2007, 11h51
  2. Probleme de java heap space : creation buffered image!
    Par Battosaiii dans le forum Multimédia
    Réponses: 7
    Dernier message: 06/08/2007, 10h49
  3. Java heap space
    Par youdev dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 10/07/2007, 11h10
  4. [jarsigner] java heap space
    Par GLDavid dans le forum Langage
    Réponses: 3
    Dernier message: 16/08/2006, 11h35
  5. Eclipse erreur : java.lang.OutOfMemoryError: Java heap space
    Par sderecourt dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 14/04/2006, 11h28

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