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 :

Erreur "java.lang.OutOfMemoryError: Java heap space"


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 15
    Points : 16
    Points
    16
    Par défaut Erreur "java.lang.OutOfMemoryError: Java heap space"
    Bonjour,

    J'ai un programme qui génère les sous schémas d'un schéma de fragmentation pour une base de données Oracle.

    L'essentiel de mon programme calcule toutes les combinaisons possibles d'un ArrayListComposer par exemple de taille 50 et que la taille max d'une liste est de 100.
    J'ai donc un problème de
    java.lang.OutOfMemoryError: Java heap space
    J'ai essayé de modifier le eclipse.ini
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    -startup
    plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
    --launcher.library
    plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
    -showsplash
    org.eclipse.platform
    --launcher.XXMaxPermSize
    256m
    -vmargs
    Xms256M
    Xmx512M
    J'ai tenté d'augmenter le Xmx à 1024, 2048, .. mais c'est toujours le même problème.

    J'ai même passé ces paramètres dans les arguments de mon projet mais le problème persiste.

    Quelqu'un saurait-il m'expliquer comment résoudre ce problème de mémoire ?

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur/Modérateur
    Avatar de Laurent.B
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    3 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 3 468
    Points : 17 037
    Points
    17 037
    Par défaut
    Bonjour,

    Il faut ajouter le paramètre Xmx dans la zone VM arguments de la configuration de lancement de ton programme.
    Cf. http://eclipse.developpez.com/faq/?p...#argumentsJVM2

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 15
    Points : 16
    Points
    16
    Par défaut
    Merci Laurent pour la réponse mais j'ai déjà fait ça.

    Je pense que le problème est dans mon code ou j'ai utilisé ArrayList
    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
    public static List<String>gen_sous_schema(ArrayList l){
     
        List<String>re = new ArrayList();
        List<String>l4 = new ArrayList();
     
        re = (List<String>) l.get(0);
     
        for (int i = 1; i < l.size(); i++) {
     
            l4 = new ArrayList();
     
            for (int j = 0; j < re.size(); j++){
     
                for (int k = 0; k < ((ArrayList) l.get(i)).size(); k++) {
     
                    l4.add(re.get(j) + "#" + ((ArrayList) l.get(i)).get(k));
                }    
            }
     
            re = new ArrayList();
     
            for (int m = 0; m < l4.size(); m++) {
                re.add(l4.get(m));
            }
        }
     
        return re;    
    }
    merci

  4. #4
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Bonjour,

    Comme sa de ton code tu remplis 2 tableaux à partir de celui en paramètre, le l. La question c'est la taille de ce tableau, s'il est si énorme tu remplis 2tableaux avec la même taille d'où un possible java heap space. Cependant que fais ta fonction? en regardant dans la boucle du l tu fais re = new ArrayList(); sa veut dire qu'à chaque passage de boucle tu fais un nouvel objet en mémoire.

    remarque : Même si augmenter le Xmx est une solution quand l'erreur survient c'est souvent qu'il faut songer à découper le programme ou qu'il est mal organisé, l'ordi n'a pas toujours les moyens de suivre ou le dévellopeur n'a pas pensé à l'optimisation.

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 15
    Points : 16
    Points
    16
    Par défaut
    Bonjour,merci pour la réponse .

    mon programme fait le produit disant cartésien entre les listes de ArrayList "l"


    Par exemple pour [1 2], [1 2] et [4 5] moi je veux produire des éléments :
    [1#1#4 ; 1#1#5 ; 1#2#4 ; 1#2#5 ; 2# 1#4 ; 2#1# 5 ; 2#2#4 ; 2#2#5]
    sachant que la taille des listes de "l" est variante




    merci

  6. #6
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    le produit cartesien est l'une des opérations les plus gourmandes en mémoire, je pense que ton algorithme peut être optimisé. As tu regardé sur internet les algorithmes déjà existant sur ce thème?

Discussions similaires

  1. Erreur "Caused by: java.lang.OutOfMemoryError: Java heap space"
    Par monta_amri dans le forum Développement Web en Java
    Réponses: 12
    Dernier message: 05/05/2015, 22h00
  2. Erreur "java.lang.OutOfMemoryError: Java heap space"
    Par Mysticaddict dans le forum Java EE
    Réponses: 3
    Dernier message: 14/08/2013, 13h04
  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, 16h22
  4. Réponses: 3
    Dernier message: 04/12/2007, 23h32
  5. Eclipse erreur : java.lang.OutOfMemoryError: Java heap space
    Par sderecourt dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 14/04/2006, 12h28

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