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 :

[JVM]Vidage de la mémoire


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Par défaut [JVM]Vidage de la mémoire
    Bonjour,

    J'ai codé en Java un modèle et je lance plusieurs simulations. Après chaque simulation j'aimerai vider la mémoire, supprimer toutes les données.

    Comment dois-je faire ?

    Un System.gc(); suffit ?

    Merci pour vos réponses.

    Emie

  2. #2
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    Il suffit de ne plus référencer tes objets.
    C'est à dire mettre tes variables pointant sur des objets à null.
    Un Systeme.gc() ne te garantie en rien le démarrage du garbage collector.
    Au plus tu lui demandes gentillement de t'excuser de lui demander pardon de bien vouloir envisager un eventuel nettoyage.
    Enfin peut être si il est bien luné et surtout si il en a besoin.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Par défaut
    OK. Mais comment on fait ? Surtout quand on a beaucoup de variables ?

  4. #4
    Membre éclairé

    Inscrit en
    Mai 2002
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Par défaut
    Tu n'as pas de contrôle direct sur la mémoire en Java. Le GarbageCollector est là pour s'en occuper.

    Si tu veux qu'un objet soit libéré de la mémoire, il te suffit de t'assurer qu'il n'y a plus aucune référence vers lui.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Integer myInt = new Integer(100);
    // ... Début des traitements avec le myInt ...
    // ...
    // ... Fin des traitements ...
    myInt = null;
    Toine

  5. #5
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    Quand tu as bcp d'objets la solution consiste à les "wrapper" dans un conteneur et de cette facon tu n'as plus qu'a de "setter" ce conteneur à null

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Par défaut
    Génial !
    Et comment fait-on ça ?
    J'ai regardé dans la javadoc, mais je n'ai rien trouvé.
    J'ai peut-être mal regardé.

    Merci.

    Emie

  7. #7
    Membre éclairé

    Inscrit en
    Mai 2002
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class MonConteneur {
     
    protected Object obj1;
    protected Object obj2;
    protected Object obj3;
    protected Object obj4;
    ...
    }
    Ensuite si tu déréférences ton instance de "MonConteneur", tous les objets internes seront également libérés car plus personne ne les référencera...

    MonConteneur monConteneur = new MonConteneur();
    // Traitement sur mon conteneur ...
    // ...
    // Fin des traitements...
    monConteneur = null;

    Tu vois le principe ? Tout réside dans le référencement des objets...

    Toine

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Par défaut
    OK. Merci beaucoup. Je vois le principe. Je vais essayer de mettre ça en place.

  9. #9
    Membre éclairé

    Inscrit en
    Mai 2002
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Par défaut
    N'hésite pas si tu as besoin d'aide ...

    Et n'oublie pas le tag "résolu" (en bas à gauche du forum)

    Toine

Discussions similaires

  1. Vidage JTable...
    Par szdavid dans le forum Composants
    Réponses: 3
    Dernier message: 13/05/2004, 11h00
  2. vidage de table, aucune reponse claire ??
    Par zax-tfh dans le forum Bases de données
    Réponses: 20
    Dernier message: 21/04/2004, 20h06
  3. Vidage de table
    Par zax-tfh dans le forum Bases de données
    Réponses: 3
    Dernier message: 20/02/2004, 16h44
  4. [JVM] Connaitre la taille mémoire utilisé par les dif classe
    Par sur_uix dans le forum Général Java
    Réponses: 4
    Dernier message: 18/09/2003, 09h17
  5. [JVM][OPTIONS][OPTIMISATION]pc dédié à Java
    Par narmataru dans le forum Général Java
    Réponses: 7
    Dernier message: 16/04/2003, 17h12

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