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 :

[Javamail] Erreur "java.lang.OutOfMemoryError: Java heap space"


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 59
    Points
    59
    Par défaut [Javamail] Erreur "java.lang.OutOfMemoryError: Java heap space"
    Bonjour tout le monde,

    Depuis peu je me suis remis a faire du Java, et je m'amuse avec l'API de javamail. Actuellement mon idée est de récuperer tous les noms de fichiers qui se trouvent sur mon compte gmail pour eventuellement en télécharger sur mon disque dur.
    Or voilà, en exécutant mon code, j'obtient l'exception "java.lang.OutOfMemoryError: Java heap space"

    Voici mon code :
    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
     
    //...
                        // Recuperation des emails...
                        Folder inboxFolder = store.getFolder("INBOX");
                        inboxFolder.open(Folder.READ_WRITE);
                        System.out.println("Message Count:" + inboxFolder.getMessageCount());
                        msg = inboxFolder.getMessages();
                        int len = msg.length;
                        for(int i = 0; i < len; i++){
                            System.out.println("subject: " + msg[i].getSubject());
                        }
     
     
                        // Recherche des emails avec Piece jointes..
                        for(int i=0; i<msg.length; i++){
     
                            Object obj = msg[i].getContent();
                            if(obj instanceof Multipart){
     
                                Multipart messageMP=null;
                                messageMP = (Multipart)obj;
     
                                for(int k=0; k<messageMP.getCount(); k++){
     
                                    String disposition = messageMP.getBodyPart(k).getDisposition();
                                    if(disposition!=null &&disposition.equalsIgnoreCase(Part.ATTACHMENT)){
                                        System.out.println(messageMP.getBodyPart(k).getFileName());
                                    } 
                                }
                            }
                        }
    La recuperation des emails ne pose aucun problème. Mais par la suite quand je scanne les emails pour recuperer les noms de fichiers, je me prend l'exception +- à la 35eme email traitée.. (sachant qu'il y en a +- 200).

    Qqun a t'il une idée ?
    Merci.

  2. #2
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 18
    Points : 17
    Points
    17
    Par défaut
    Salut,

    Un petit truc à tenter: sors la déclaration de obj et messageMP de la boucle. Je ne suis pas sûr de moi, mais je dirais qu'en faisant de la manière dont tu fais, on instancie les 2 objets à chaque tour de boucle dans un espace mémoire différent. Si tu déclares les 2 variables avant de commencer la boucle (en les mettant à null), tu utiliseras toujours la même référence, mais le contenu sera différent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // Recherche des emails avec Piece jointes..
    Object obj =null;
    Multipart messageMP=null;                            
    for(int i=0; i<msg.length; i++){
     
           obj = msg[i].getContent();
           if(obj instanceof Multipart){
     
                    messageMP = (Multipart)obj;
               ...
           }
        ...
    }
    dis moi si ça marche mieux

    à+

    --
    Vincent

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 59
    Points
    59
    Par défaut
    Salut,

    Tout d'abbord merci pour ta réponse.
    En effet, j'y avait déjà pensé, et également testé. Hélas, cela ne change rien du tout au problème...

    Si qqun d'autre a une idée, j'ai les oreilles grandes ouvertes

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 59
    Points
    59
    Par défaut
    Je viens encore de tester l'execution avec le Profiler de NetBeans. On voit bien que le Heap Space alloué monte en fleche sans redescendre..
    Pourtant je ne vois vraimment pas à quoi c'est du

Discussions similaires

  1. Réponses: 9
    Dernier message: 11/06/2014, 16h28
  2. Erreur "java.lang.OutOfMemoryError: Java heap space"
    Par Mysticaddict dans le forum Java EE
    Réponses: 3
    Dernier message: 14/08/2013, 12h04
  3. Erreur "java.lang.outofmemoryerror java heap space"
    Par iliass001 dans le forum Général Java
    Réponses: 10
    Dernier message: 18/02/2013, 15h22
  4. Erreur "java.lang.OutOfMemoryError: Java heap space"
    Par djanahana dans le forum Langage
    Réponses: 5
    Dernier message: 05/06/2012, 14h40
  5. Eclipse erreur : java.lang.OutOfMemoryError: Java heap space
    Par sderecourt dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 14/04/2006, 11h28

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