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

Langage Java Discussion :

[java] fuite memoire quand 2 process!


Sujet :

Langage Java

Vue hybride

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 237
    Par défaut [java] fuite memoire quand 2 process!
    Bonjour,
    Voila, j'ai un petit soucis.

    J'ai un programme java (prog1) qui marche tres bien. Il prend dans les 20Mo.

    Ce programme je decide maintenant de l'inclure dans un autre programme java(prog2).

    Donc quand je lance prog2 puis a l'interieur prog1, j'ai 2 process java.

    Et la tout bascule! Mon prog1 a des fuites memoires et commence a atteindre la taille de 100Mo...

    Du coup, je ne comprend rien! Alors si vous avez une idee de ce qui pourrait faire cela...

    Pour info, je lance mon prog1 via un bat. Donc dans prog2, j'apelle juste le bat.

    Merci!

  2. #2
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Quand tu dis : je décide de l'inclure : tu lances le programme 1 dans le code du programme 2 c'est bien ça ? As tu 2 processus java ? Pourrais tu donner le code du programme 2 qui lance le bat du programme 1 ? Merci.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 237
    Par défaut
    Oui c'est bien ca!
    Et du coup, en effet, j'ai deux processus java :
    - un qui a un comportement normal (prog2)
    - l'autre qui monte en memoire sans arret...

    Voila comment il est lance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     _proc = Runtime.getRuntime().exec(_vsCmd, null, new File(_vsWorkingArea));
    avec :
    _vsCmd = chemin vers mon bat.
    _vsWorkingArea = repertoire de mon bat

  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
    Salut,


    Es-ce que tu traites les flux d'entrée/sorties de ton Process ?
    Sinon il faudrait au moins que tu les fermes...

    a++

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 237
    Par défaut
    hum.

    En effet, la grosse difference entre lancer mon bat a la main et dans mon prog java, ce sont les sorties.

    A la main, tout s'affiche dans ma console.
    Dans le java, je n'ai aucun affichage...

    J'aurai aime que l'on voit les choses defilees...
    Mais sinon, comment on ferme ces flux?

    Merci!

  6. #6
    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 vince3320
    A la main, tout s'affiche dans ma console.
    Dans le java, je n'ai aucun affichage...
    C'est parce que les entrées/sorties du programme que tu lances doivent être lu par ton application Java, en utilsiant les méthodes getInputStream(), getOutputStream() et getErrorStream() de ton Process...

    Attention : les flux doivent être traité dans des threads différents afin d'éviter des interblocages (si tu utilises Java 5.0 tu peux utiliser ProcessBuilder pour "cumuler" stdout et stderr).

    Enfin si tu ne souhaites pas traiter un flux, il faut le fermer...

    a++

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

Discussions similaires

  1. Fuite memoire et taille de la memoire du process
    Par ricky78 dans le forum MFC
    Réponses: 4
    Dernier message: 01/12/2008, 17h02
  2. Benchmark d'utilisation cpu et memoire d'un process
    Par stephane.julien dans le forum C#
    Réponses: 16
    Dernier message: 17/06/2008, 11h16
  3. [2.0] Comment tracer les fuites mémoire ?
    Par StormimOn dans le forum C++/CLI
    Réponses: 9
    Dernier message: 02/11/2007, 07h22
  4. mysql, java et memoire
    Par hamma2 dans le forum JDBC
    Réponses: 2
    Dernier message: 18/12/2006, 16h59
  5. [VC++6] probleme fuite memoire CLIST ?
    Par athilla dans le forum MFC
    Réponses: 16
    Dernier message: 22/11/2005, 16h01

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