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 :

Problème de Ram/Detruire Objets


Sujet :

Java

Vue hybride

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 201
    Par défaut Problème de Ram/Detruire Objets
    Bonjour,


    J'ai une appli qui charge de gros fichiers. J'ai des problèmes de ram à tel point que quand je charge plusieurs de ces gros fichier je me prend une OutOfMemoryError. Pour remédier à ca temporairement, j'ai alloué plus d'espace Ram à l'appli mais bon c pas super... Faut que je revois mon code aussi pour le simplifier. Néanmoins lorsque je charge un fichier et que j'observe la rame utilisée par mon logiciel je constate que la rame augmente mais quans je ferme ce fichier la rame ne diminue pas. Pourtant j'ai bien viré mes fichiers de mes Vecteurs et je mets bien mes objets à null. Y a t il un probleme de garbage collector ou dois je utiliser une fonction qui me perméttrait de libérer la mémoire??

    Merci,

    Laurent

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



    As-tu bien fermé tes fichiers avec close() ? Tu as bien 'effacé' toutes les références vers les objets contenant les données des fichiers lus ?

    Rien ne garantit que la mémoire sera rendu au système immédiatement. Au contraire le Garbage Collector peut la conserver pour des raisons d'optimisation...

    a++

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 201
    Par défaut
    ben j'utilise pour ouvrir mes fichiers :

    fichierCourant = new File(filename);

    et y a pas de fonction close... donc je met a null.

  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
    Heu...

    La classe File est seulement une représentation d'un fichier, mais ne permet en aucun cas de lire son contenu !!!

    Donc soit tu en crée un très grand nombre, soit il y a autre chose qui pose problème...

    a++

  5. #5
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 887
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 887
    Par défaut
    Pour lire tes fichiers, je te conseille de ne pas les charger totalement en RAM. Tu dois plutot utiliser des flux de lectures bufferisés, qui te permettent de lire ton fichier petit à petit.

    Si tu connais la taille "d'un enregistrement", en mémoire tu n'auras donc que cette taille, à quelques chouillas près.

    adiGuba parle évidemment des closes sur tes flux : n'oublies-pas que pour cela, tu peux utiliser la clause "finally" du bloc try and catch, qui est toujours executée, quelque soit le résultat dans le bloc try : c'est là qu'il faut placer les closes, dans l'ordre inverse de l'ouverture de tes flux.

    A+

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 201
    Par défaut
    ah oui pardon...

    Voici ma fonction qui lit le fichier File (fichierCourant)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    public void LireFichier(JTextArea champTexte) throws IOException
        {
     
    		champTexte.setText("");
    		fichierContenu="";
    		BufferedReader raf = null;
    		String ligne=null;
     
        try
          {
        	raf = new BufferedReader(new FileReader(fichierCourant.getPath()));
     
     
          while ( (ligne = raf.readLine()) != null )
            {
            fichierContenu = ligne+"\n";
            champTexte.append(fichierContenu);
            }
     
          }
     
       catch (IOException e)
         {
     
         System.out.println("erreur dans: " + e);
         }
       finally {
    	   raf.close();
       }
     
        }
    j'ai mis close mais la ram ne se libere toujours pas.

Discussions similaires

  1. [Sécurité] Problème de récupération d'objet sérialisé
    Par Mysticlolly dans le forum Langage
    Réponses: 6
    Dernier message: 31/03/2006, 14h16
  2. Problème de RAM
    Par Bouguennec dans le forum Composants
    Réponses: 5
    Dernier message: 20/01/2006, 16h21
  3. [hibernate]Problème de récupération d'objet...
    Par roxx62 dans le forum Hibernate
    Réponses: 1
    Dernier message: 07/07/2005, 11h36
  4. Réponses: 14
    Dernier message: 02/03/2005, 18h15
  5. [SERVER 2003] Problème de ram
    Par sheura dans le forum Windows Serveur
    Réponses: 9
    Dernier message: 22/08/2004, 19h36

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