begin process at 2010 03 21 02:44:39
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Divers

 > 

Général

 > 

fuite mémoire dans mon programme Java


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

fuite mémoire dans mon programme Java

dimanche 20 mai 2007 à 18:58:11 | fuite mémoire dans mon programme Java

Mekhanik

Bonjour,
j'ai développé un programme java qui communique avec une dll via JNI. J'étais entrain de corriger ma DLL pour supprimer les fuites mémoires et je m'aperçois que mon programme java en génere aussi ??
Mon programme est constitué d'un thread qui toute les secondes invoque une méthode.
J'ai simplifié cette méthode au minimum :

synchronized public void lancerTraitementProjet()
    {
        Set mesProjets;
        Set mesLogicielsASurv;
         mesLogicielsASurv = new HashSet();
         mesProjets = new HashSet();
        mesProjets = null;
        mesLogicielsASurv = null;
    }


et je remarque grâce au gestionnaire des tâches que mon la mémoire utile de mon application augmente de 4 octets indéfiniment très régulièrement (un peu plus d'une seconde).
J'aimerais donc avoir des informations sur ce problème (origine, cause, correction ...)
Merci !
dimanche 20 mai 2007 à 19:30:24 | Re : fuite mémoire dans mon programme Java

sheorogath

Membre Club Administrateur CodeS-SourceS
tu donne pas assez d'infos et la methode non simplifie ca donne quoi?

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
dimanche 20 mai 2007 à 19:40:27 | Re : fuite mémoire dans mon programme Java

Mekhanik

Pour complément je met mets deux classes utilisées ainsi que mon main :

///////////////////////////////////////////////////////////////// Thread SurvProjet ////////////////////////////
public class SurvProjet extends Thread{

        private SurvMetier monSurvMetier;
       
        public SurvProjet(SurvMetier survMetier)
        {
            monSurvMetier = survMetier;
        }
       
        public void run()
        {
            while(true)
            {
                try
                {
                    monSurvMetier.lancerTraitementProjet();
                    sleep(1000);
                }
                catch(InterruptedException e)
                {
                    System.out.println("Thread SurvProjet interrompu dans son sommeil");
                }
            }
        }
}
/////////////////////////////////////////////////////////////////  Classe SurvMetier  ////////////////////////////

import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Set;


public class SurvMetier {
    private Thread monThreadSurvProjet;
    private Metier monMetier;
   
    public SurvMetier()
    {
        monThreadSurvProjet = new SurvProjet(this);
    }
   
    public void demarrerSurveillance()
    {
        monThreadSurvProjet.start();
    }
   
   synchronized public void lancerTraitementProjet()
    {
        Set mesProjets;
        Set mesLogicielsASurv;
         mesLogicielsASurv = new HashSet();
         mesProjets = new HashSet();
        mesProjets = null;
        mesLogicielsASurv = null;
    }

   
}

///////////////////////////////////////////////////////////////// Main  ////////////////////////////

public class MainApiInterruptSC {

    public static void main(String[] args) {
        SurvMetier timerEcoute = new SurvMetier();
        timerEcoute.demarrerSurveillance();
    }

}


Tout "le reste" est en commentaire et n'a donc aucune influence.
Je peux fournir tout autre info sur le fonctionnenement si besoin

dimanche 20 mai 2007 à 23:31:16 | Re : fuite mémoire dans mon programme Java

Mekhanik

Juste pour information, au cour de mes recherches, j'ai trouver des articles sur la gestion de la mémoire par le garbage collector de java. Apparemment, celui-ci ne s'éxécute que lorsque la consommation de la mémoire est grande. De plus il n'est efficace que pour les objets non référencés (ce qui est logique). Mais je ne m'explique toujours pas pourquoi la mémoire augmente car les objets créés dans une méthode sont bien détruis en fin de méthode ? et les objets composants d'un objet sont bien référencés qu'une seule fois à la création de l'objet parent et donc leur place en mémoire n'augmente pas à chaque utilisation de l'objet ? Y a t-il des exceptions pour les thread ou pour les méthodes synchronized ?
Merci de m'éclaircir !


Cette discussion est classée dans : java, programme, mémoire, mesprojets, meslogicielsasurv


Répondre à ce message

Sujets en rapport avec ce message

lanct prog VB dans prog JAVA [ par deju ] Bonjour.J'aimerais lancer un programme Visual Basic a partir d'un programme JAVA, comment faire?? convert vba en java [ par alizecha ] Bonjour à tousJ'ai fait un programme sous excel97 et vba. Ce programme utilise des feuilles pour le stockage et le calcul automatique de variables, un executer un exe (source C++) avec du java [ par zebulaon ] Bonjour,Je voudrais savoir comment on peut interfacer un programme C++ avec du java.Je dispose des sources d'un prog ecrit en C++ et j'aurai besoin de Optimisation d'un programme JAVA [ par karim1758 ] Salut,Je cherche quelqu'un qui pourrai m'aider à optimiser un programme JAVA qui me semble un peu lourd au niveau des lignes de code car je suis un dé Arbre binaire java [ par frances ] J'étude au Portugal. Je doit faire un programme em JAVA d'arbres binaires qui demande a l'utilizateur s'il veux ajouter ou suprimmer une donnée et que mettre du son dans un programme java [ par neopascal ] Je voudrais savoir comment faire pour lire un fichier son dans un programme java. Ouvrir un executable dans un programme JAVA [ par lbg5941 ] J'aimerai lancer un executable lorsque j'appuie sur un bouton de mon application. Je n'arrive pas à trouver comment le faire. Merci de votre aide Help: reload d'un fichier compilé pendant un programme java [ par Kindasch ] je modifie et compile un fichier java lors de l'execution d'un programme java, et j'aimerais que ces modifications soient prises en compte lors de la Reload d'un fivhier compiler pendant un programme JAVA [ par Kindasch ] je modifie et compile un fichier java lors de l'execution d'un programme java, et j'aimerais que ces modifications soient prises en compte lors de la programme exécutable [ par taoso ] Bonjour,J'ai un problème: j'arrive à créer un fichier exécutable pour lancer mon programme java ms ils me disent qu'il y a un problème :java.lang.clas


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,234 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales