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 :

Out Of Memory


Sujet :

Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Par défaut Out Of Memory
    Bonjour,
    J'utilise un programme console JAVA créé avec l'interface netbeans et je rencontre un problème, le programme sort brutalement à un moment avec l'erreur : Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

    Savez-vous d'où le problème pourrait venir ?

    Merci par avance pour toute réponse.

  2. #2
    Membre expérimenté Avatar de Roy Miro
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 273
    Par défaut
    Bonjour,

    Il n'y a plus assez d'espace dans la mémoire allouée à ton prog par la JVM.

    Une solution possible est de lancer ton programme en lui indiquant certains arguments de lancement afin que la JVM alloue plus d'espace:
    http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html

    Regarde la section 4.1 Total heap.

    Edit:
    une doc en français avec qques exemples sur comment lancer un programme avec des paramètres de lancement:
    http://gfx.developpez.com/tutoriel/java/gc/

  3. #3
    Membre éprouvé Avatar de Celeborn
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 133
    Par défaut
    2 solutions :

    * Soit ton programme à une empreinte mémoire importante (du moins plus importante que celle allouée par défault). Dans ce cas tu peux effectivement spécifier d'avantage de mémoire à ta jvm.

    * Soit les algos qui se cachent derrière ton code ont une complexité plus importante que nécessaire. Les corriger résolvera ton pb. Il n'y a alors pas de solution miracle, au cas par cas.

    Si tu es junior en dev ou que ton projet est petit et simple alors il est probable que ce soit le second cas de figure.
    Dans ce cas appliquer la première solution, qui peut paraitre plus simple, ne fera que déplacer ton problème. Je te fais une analogie : Si y'a le bordel dans ta chambre tu peux décider de déménager toutes tes affaires dans une chambre plus grande => durant quelque temps le bordel passera inapercu puis il va grossir et le résultat sera le même (sauf que dans une chambre plus grande)

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Par défaut
    Bonjour Celeborn,
    Merci pour ces indications.

    Quelques précisions supplémentaires :

    Cette application n’a pour seul but que de lire 1 ou N fichiers csv et d’intégrer leurs contenus dans une base ORACLE.

    Le programme se plante sans donner plus d’indication sur un environnement de recette.



    En lançant ce même programme dans un environnement de développement, le programme se plante en indiquant Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

    Java Result: 1


    Le même programme lancé sur une machine de production ne se plante pas.


    J’en conclus donc que le paramétrage de la machine virtuelle JAVA doit différer sur ces 3 machines ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Par défaut
    Bon en fait en mettant ces propriétés dans les paramètres de mon projet NetBeans, cela semble fonctionner mieux :
    -Xmx512m -XX:MaxPermSize=256m

    Je continue de plus amples tests.

    Par contre, la question que je me pose c'est lorsque je livre le projet je crée un jar. Faut-il donc que je relivre un jar pour déploiement sur une machine de qualification ?

    Ou ces paramètres sont à indiquer manuellement au niveau de la machine virtuelle de la machine de qualification ?

    Merci par avance.

  6. #6
    Membre éprouvé Avatar de Celeborn
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 133
    Par défaut
    salut,

    Nan tu n'as pas besoin de faire de jar spécifique ; tu peux configurer chacune de tes JVM par exemple en paramètre à ta commande java -jar.

    En revanche vérifie bien que en chargeant un fichier plus gros ou alors plusieurs fichiers d'affilié ton prog supporte toujours la charge.

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

    Citation Envoyé par david71 Voir le message
    Bon en fait en mettant ces propriétés dans les paramètres de mon projet NetBeans, cela semble fonctionner mieux :
    -Xmx512m -XX:MaxPermSize=256m
    Attention il y a de forte chance que cela soit une mauvaise solution, voir une solution temporaire : tu augmentes la mémoire car le programme consomme trop.

    Mais il y a de forte chance que tu rencontres à nouveau ce problème avec un jeu de données plus important !


    Il serait plus judicieux de revoir tes algorithmes afin d'y déceler les utilisations abusives d'objets, et les non-libérations de ressource...

    Tu peux utiliser jconsole pour avoir une idée des objets que tu utilises dans ton programme...

    a++


    Je continue de plus amples tests.

    Par contre, la question que je me pose c'est lorsque je livre le projet je crée un jar. Faut-il donc que je relivre un jar pour déploiement sur une machine de qualification ?

    Ou ces paramètres sont à indiquer manuellement au niveau de la machine virtuelle de la machine de qualification ?

    Merci par avance.[/QUOTE]

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,


    Attention il y a de forte chance que cela soit une mauvaise solution, voir une solution temporaire : tu augmentes la mémoire car le programme consomme trop.

    Mais il y a de forte chance que tu rencontres à nouveau ce problème avec un jeu de données plus important !


    Il serait plus judicieux de revoir tes algorithmes afin d'y déceler les utilisations abusives d'objets, et les non-libérations de ressource...

    Tu peux utiliser jconsole pour avoir une idée des objets que tu utilises dans ton programme...

    a++


    Je continue de plus amples tests.

    Par contre, la question que je me pose c'est lorsque je livre le projet je crée un jar. Faut-il donc que je relivre un jar pour déploiement sur une machine de qualification ?

    Ou ces paramètres sont à indiquer manuellement au niveau de la machine virtuelle de la machine de qualification ?

    Merci par avance.
    [/QUOTE]

    Comment utiliser la Jconsole ?

Discussions similaires

  1. [XStream][String]out of memory
    Par Invité dans le forum Persistance des données
    Réponses: 8
    Dernier message: 10/01/2006, 14h52
  2. [C++] [gcc] out of memory
    Par fxp17 dans le forum GCC
    Réponses: 5
    Dernier message: 06/01/2006, 10h29
  3. [pb mémoire] out of memory d'eclipse
    Par Casp dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 12/05/2005, 16h39
  4. Out of memory
    Par shurato dans le forum ANT
    Réponses: 1
    Dernier message: 10/11/2004, 16h19
  5. [JBuilder 8] Out of memory problem ...
    Par keros dans le forum JBuilder
    Réponses: 2
    Dernier message: 08/09/2003, 19h03

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