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 :

Conseil optimiser la mémoire


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Par défaut Conseil optimiser la mémoire
    Bonjour,

    J'ai développé une application devant tourner en tache de fond sur un pc sans interruption. Pour cela, il me faut gérer correctement la mémoire de celle ci.

    Voici grosso modo, ce que contient mon application:
    -Une interface graphique dynamique avec 2 JfreeChart et un jtable.
    -Plusieurs thread ayant chacun une connexion JMS.
    -7 Timers pouvant tourner simultanémenet.

    Je pense avoir cité les objets utilisant le plus de ressource.

    J'ai remarqué que depuis que j'ai mi en place les timers, mon application est devenu beaucoup plus gourmande en mémoire. J'utiliise Jconsole pour mes tests de mémoire.

    Avez vous quelques conseils à me donner pour la gestion de la mémoire?

    PS: j'ai déja parcouru les tuto sur ce sujet.

  2. #2
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    y'a pas de miracles, pour gérer correctement la mémoire:

    1) fermer manuellement dans un finally toutes les ressources systèmes (flux, connexions, ...)
    2) dès qu'un objet n'est plus utile, on met sa référence à null (principalement les champs de classe, les variables locales étant automatiquement détruites)
    3) on profile avec un profiler (de préférence plus évolué que jconsole) et on interprète les résultats: on regarde les allocations, on exécute le garbage collector, et on voit quelles sont les objets qui n'ont pas pu être collectés

    c'est pas très facile, mais y'a rien d'autre en magasin

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Par défaut
    Est ce que Java VisualVM est plus évolué que JConsole?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par tupac25 Voir le message
    Est ce que Java VisualVM est plus évolué que JConsole?
    Oui en effet.
    Entre autres, avec Visual VM on peut observer la mémoire et les processus en détail au runtime.

  5. #5
    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,

    Citation Envoyé par Pill_S Voir le message
    2) dès qu'un objet n'est plus utile, on met sa référence à null (principalement les champs de classe, les variables locales étant automatiquement détruites)
    Mais si on a besoin de mettre à null un attribut de classe c'est qu'il y a un soucis : cela ne devrait pas être un attribut mais une variable locale...

    Une erreur fréquente étant de tout mettre en attribut (voir en static) par "simplicité".

    a++

  6. #6
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Mais si on a besoin de mettre à null un attribut de classe c'est qu'il y a un soucis : cela ne devrait pas être un attribut mais une variable locale...
    +1, mais par principe je rappelle la règle: il y a certains cas où cela peut s'envisager (p.ex. mise en cache d'un résultat quelconque jusqu'à ce qu'on l'invalide en le mettant à null, ou suppression d'un objet d'un ThreadLocal lorsqu'on sait que le thread va mourir, etc)


  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Par défaut
    Est ce que cette déclaration est mauvaise alors:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Class MaClass{
     
      private Object obj = null;
     
      public void method(){
     
         obj = new Object();
      }
    }
    Sachant que je n'ai pas besoin que mon objet soit global.

  8. #8
    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
    @tupac25 question : a quoi sert 'obj' ???

    Sans la réponse à cette question, impossible de t'en dire plus...

    a++

Discussions similaires

  1. optimiser java mémoire, charge
    Par cdm1024 dans le forum Général Java
    Réponses: 3
    Dernier message: 24/02/2009, 17h17
  2. Optimiser la mémoire pour réduire le temp d'import
    Par Bourak dans le forum Administration
    Réponses: 20
    Dernier message: 03/11/2008, 10h23
  3. Optimiser la mémoire d'une app VB 2005
    Par Diabless6 dans le forum VB.NET
    Réponses: 34
    Dernier message: 21/08/2007, 19h18
  4. Optimisation de mémoire / rapiditée
    Par Zenol dans le forum C++
    Réponses: 9
    Dernier message: 25/09/2005, 11h18

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