Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : java.lang.OutOfMemoryError [ Archives / Divers ] (ObiWanKennedy)

dimanche 26 février 2006 à 11:46:24 | java.lang.OutOfMemoryError

ObiWanKennedy

Bonjour, je travaille sur une application de gestion de playliste winamp donc voici ma fonction qui crée un fichier html avec divers renseignement.

public void creehtml(boolean allormissed)//true on affiche tous les fichier de la playliste et false on affiche que les fichiers manquants
 {
  boolean mp3;
  if(allormissed)//on affiche tout.
  {
   try{
    BufferedWriter fW= new BufferedWriter(new FileWriter("PlaylisteAll.html",true));
   
    fW.write("<center>Voici une exportation de votre playList en Html</center>"+"\r\n");
    fW.write("<br><br>");
    fW.write("<table><tr><td>nom du fichier</td><td>chemin</td><td>Groupe</td><td>Titre</td><td>Statut</td></tr>");
    String artistetemp=null,titretemp=null;
     for(int i=0;i<file.size();i++)
     {
      mp3=false;
          
      
      try
      {
      if((Vfichier.elementAt(i).toString().contains(".mp3"))&&(Existe.elementAt(i).toString().equals("oui")))
       {
        try//création d'un objet MP3File tampon je recupère les info que je désire et je passe mon temp à null et je vide "les dechets"
        {
         MP3File temp = new MP3File(Vfichier.elementAt(i).toString());
         mp3=true;
         artistetemp = temp.getArtist().getTextContent();
         titretemp = temp.getTitle().getTextContent();
         temp=null;
         Runtime.getRuntime().gc();

        }
        catch(Exception e)
        {
         System.out.println(e.toString());
        }
       
       }
      //j'affiche divers information comme le chemin et le nom du fichier son
       fW.write("<tr><td>");
       fW.write(file.elementAt(i).toString());
       fW.write("</td><td>");
       int longueur = Vfichier.elementAt(i).toString().length()-file.elementAt(i).toString().length();
       String temp2 = Vfichier.elementAt(i).toString().substring(0,longueur);
       fW.write(temp2);
       fW.write("</td><td>");
       if(mp3)//si c'est un mp3 alors j'ecris les information issue du ID3v2  dans ma pages html
       {
        
        
        
        if(artistetemp!=null)
         fW.write(artistetemp);//nom de l'artiste
        else
         fW.write("&nbsp");
         
        fW.write("</td><td>");
        
        
        if(artistetemp!=null)
         fW.write(titretemp);
       else
         fW.write("&nbsp");
 
       }
       else //si c'est pas des mp3 j'ecris des espaces
       {
        fW.write("&nbsp");
        fW.write("</td><td>");
        fW.write("&nbsp");

       }
       artistetemp=null;//je passe mes chaines de caractrères a null.
       titretemp=null;
       
       
       fW.write("</td><td>");
       if(Existe.elementAt(i).toString().equals("oui"))
       {
         fW.write("Présent"+"\r\n");      
       }
       else
       {
         fW.write("Indisponible"+"\r\n"); 
       }
      }
      catch(Exception e)
      {
       //System.out.println(ligne+" 1");
       System.out.println(e.toString());
       System.gc();//si une exception est reçu ici on vide les dechets.
      }
     }
     fW.close();
    }
    catch(IOException e)
    {
       //System.out.println(ligne+" 1");
     System.out.println(e.toString());
    }
    
   
  }
  else//cette partie fonctionne tres bien.
  {
   try{
   
   BufferedWriter fW= new BufferedWriter(new FileWriter("PlaylisteIndispo.html",true));
   fW.write("<center>Voici liste des fichiers qui n'existe plus sur votre disque</center>"+"\r\n");
   fW.write("<br><br>");
   fW.write("<br><br>");
   fW.write("<table><tr><td>nom du fichier</td><td>chemin</td></tr>");
    for(int i=0;i<file.size();i++)
     {
          
      
       
       if(Existe.elementAt(i).toString().equals("oui"))
       {
              
       }
       else
       {
         System.out.println(file.elementAt(i).toString());
          fW.write("<tr><td>");
          fW.write(file.elementAt(i).toString());
          fW.write("</td><td>");
          int longueur = Vfichier.elementAt(i).toString().length()-file.elementAt(i).toString().length();
          String temp2 = Vfichier.elementAt(i).toString().substring(0,longueur);
          fW.write(temp2);
          fW.write("</td></tr>"); 
       }
      }
     fW.close();
    }
   catch(Exception e)
    {
      
     System.out.println(e.toString());
    }
   
   
  }
  
 }

j'ai utilisée une librairy: [ Lien ] pour les classes MP3File  et j'ai écris à l'auteur mais l'email n'est pas arrivé.
j'ai lu sur divers forum que cette erreur était un dépassement de la capacité mémoire de la JVM. J'ai vu diverses solutions comme l'option -Xmx250m pour augmenter l'espace mémoire de la JVM cela ne fonctionne pas et le garbage collector ne m'aide pas plus.

pour info: ma playliste contient 14 110 fichier de musique et celà plante vers le 1 300ème.

voila merci.


dimanche 26 février 2006 à 12:17:12 | Re : java.lang.OutOfMemoryError

sheorogath

Membre Club Administrateur CodeS-SourceS
tu n'aurais pas la ligne ou se declenche le probleme par hasard ?

dimanche 26 février 2006 à 12:50:22 | Re : java.lang.OutOfMemoryError

gmi19oj19

Membre Club
J'ai aps lu le code dans le détail, mais si tu stockes tous tes fichiers MP3 via des objets, c'est pas étonnant que ça plante^^

gmi19oj19

dimanche 26 février 2006 à 13:12:32 | Re : java.lang.OutOfMemoryError

ObiWanKennedy

non mais quand je mets ces lignes en commentaires:

 MP3File temp = new MP3File(Vfichier.elementAt(i).toString());
         mp3=true;
         artistetemp = temp.getArtist().getTextContent();
         titretemp = temp.getTitle().getTextContent();
         temp=null;



cela marche bien mais je n'ai pas toutes les infos que je désire.
a oui, l'erreur exacte est java.lang.OutOfMemoryError : java heap space.

il serait logique que ce soit cette ligne.
MP3File temp = new MP3File(Vfichier.elementAt(i).toString());
la nouvelle allocation ne peut pas ce faire car il y a plus de mémpoire disponible.

dimanche 26 février 2006 à 13:32:32 | Re : java.lang.OutOfMemoryError

ObiWanKennedy

Ben non justement je stocke pas tous les mp3 dans des objets enfin du moins je ne veux pas faire ça mais c'est se qui a l'air de faire. Normalement je crée un objet je prends ce qui m'interesse et je le détruit mais la destruction ne se fait pas on dirait.
Normalement, je ne dois avoir qu'un seul objet MP3File en mémoire au maximun.
mais apparament je dirais qu'il y a une memory lack c-a-d que il me crée un objet et au lieu de le détruire et de recréer un objet au même endroit ben il en crée un autre. Mais je comprends pas pourquoi il fait.
voila.

merci

dimanche 26 février 2006 à 16:09:18 | Re : java.lang.OutOfMemoryError

sheorogath

Membre Club Administrateur CodeS-SourceS
au lien de fait System.out.println(e.toString()); essaie de faire e.printStackTrace et on sauras ou se produit ou plutot quand ce produit l'exception sinon moi je m'etais fait un petit prog qui me lister tout mes mp3 (2000) il ne planté pas je stocker des objets file dans un vector tout se passe tres bien

dimanche 26 février 2006 à 17:51:32 | Re : java.lang.OutOfMemoryError

sheorogath

Membre Club Administrateur CodeS-SourceS
joubliais apres j'ecrivais le vector dans un fichier textes je pense qu'il ny a pas grand chose a modifer pour en faire un html si tu veut le code je te le passerai par mail

dimanche 26 février 2006 à 18:25:01 | Re : java.lang.OutOfMemoryError

ObiWanKennedy

j'ai fait 
 catch(OutOfMemoryError e)
 {
         e.printStackTrace();
 }
et en faite l'application continue je ne comprends pas mais sa n'affiche pas la date.
donc maintenant j'ai bien ma liste avec tout mes mp3 mais l'erreur revient plusieur fois durant l'execution.


dimanche 26 février 2006 à 19:06:53 | Re : java.lang.OutOfMemoryError

sheorogath

Membre Club Administrateur CodeS-SourceS
un peu bizarre je me renseigne un peu sur le package et tout a la limite j'essai ton code et essai de le corriger mais je ne garantie rien !! mais dasn le tableau que tu liste pour les mp3 il n'y a que des fichier mp3 ? ou il y a d'autre type de fichier ?

dimanche 26 février 2006 à 20:10:24 | Re : java.lang.OutOfMemoryError

sheorogath

Membre Club Administrateur CodeS-SourceS
je veins de faire un code ou plutot modifier un code que j'avais fait permettant de lister les mp3 de mon pc ensuite d'apres un Vector il recupere tous les mp3 lister en fait des MP3File et ecrit dans un fichier texte qq info j'avou que j'ai une frame exception que j'essai de resoudre


1 2

Cette discussion est classé dans : system, write, tostring, fw, elementat


Répondre à ce message

Sujets en rapport avec ce message

écrire dans un fichier [ par hatem_benjemaa ] Bonjour, j'utilise le bean suivant pour écrire dans un fichier. package bfc; import java.io.*; public class writeFile { public void writeS Problème avec DataInputStream.readLine() [ par Syd67 ] Bonjour à tous, J'ai un petit problème qui me surprend un peu j'avouerai, mais peut etre que ca vient du fait que je ne maitrise pas forcément toutes JPANEL [ par LeNeutrino ] je suis en projet et je souhaiterais faire un formulaire et pour les insertions de données et pour les consultations. j'utilise un jdbnavcombox relié Resultset (MIN, MAX, COUNT, DISTINCT) GROS PROBLEMS [ par neena ] Bonjour, voila mon pb, je cherche comment récupérer le max, min, count d'une requete SQL.Mais voila que j'ai une erreur il n'aime pas l'opérateur.requ JFileChooser : probleme [ par kokojavafr ] Bonjour tout le monde! Voila, jai un JFileChooser pour ouvrir un fichier, mais une fois que je clique sur ouvrir, ou annuler, la fenêtre du JFileChoos Trés urgent :connexion oracle/java [ par infkb ] Bonjour , j'ai un probleme de connexion avec la base de données oracle. j'ai instancié la base et je n'arrive pas a y acceder,qui est ce que je doit f Problème de dates [ par scaryman ] bonjour a tous, voila le code que j'utilise :         Calendar cal = new GregorianCalendar(2005, 8, 8); //mettre le calendrier au 08/09/2005         probel au niveaud'un EJB [ par lova26 ] bonjourj'ai un ejbcmp que je ve l'executer à partir d'une class(je travail sur websphere)le prob ce qui ne ve s'executervoila mon code de class:public Lecture ecriture binaire [ par oncle jules ] Salut à tous et à toutes Il me faut lire les données d'un fichier .txt pour le transformer en un fichier binaire. J'ai implémenté tout ça et je vous d java/oracle [ par infkb ] Salut, Je fais une petite application dont j'insère les données dans une base de données Oracle , j'insert dans une table appelé Dep dont le format


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,577 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.