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 :

Espace mémoire insuffisant


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 59
    Par défaut Espace mémoire insuffisant
    Bonjour, je suis en train de développer une application qui se doit de scanner l'ensemble des pages d'un site afin de les analyser et d'en ressortir certaines informations (valide W3C, structure...). Donc pour obtenir les pages je créée l'arborescence du site et doit récupérer l'ensemble des liens.
    Le problème c'est que lorsque le site compte beaucoup de pages j'obtients :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    J'ai déjà pas mal optimiser mon code en mettant à null mes objets.

    Je sais qu'on peut augmenter la taille du tas sous eclipse mais est ce que cela sera également le cas lorsque je mettrais mon logiciel en prod avec son jar exécutable?? puis pas sur que cela soit très propres. surtout que pour le moment j'ai toujours pas fait l'interface graphique qui risque de me bouffer de la mémoire aussi.

    Sinon je me demandais si il était possible d'augmenter la taille du tas de manière dynamique.

    Si quelqu'un à une idée pour éviter la gestion de la mémoire.

    Merci d'avance.

  2. #2
    Membre éprouvé Avatar de we.are.the.storm
    Profil pro
    Inscrit en
    Février 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 115
    Par défaut
    Bonjour,

    L'augmentation de la taille mémoire allouée à un programme se gère directement à l'éxecution du programme en passant des attributs à la machine virtuelle, voir -Xms (mémoire min allouée) et -Xmx (mémoire max allouée)
    http://download-llnw.oracle.com/java...aris/java.html

    C'est ce que fait Eclipse au travers de son interface et c'est donc possible en prod en lancant votre programme de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -Xms64m -Xmx128m monProg

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 59
    Par défaut
    OK et pour l'avoir à chaque lancement de l'application quelque soit l'os je dois faire comment?

  4. #4
    Membre éprouvé Avatar de we.are.the.storm
    Profil pro
    Inscrit en
    Février 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 115
    Par défaut
    L'exemple que je vous ai donné fonctionne sur tous les OS.

    Après, personnellement je fournirais avec mon programme un script par OS, startup.sh pour Linux et startup.bat pour Windows par exemple, mais les deux contiendront mon exemple tel quel.

  5. #5
    Membre éclairé Avatar de lastrecrue
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    360
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 360
    Par défaut
    La vrais question est ce que c'est possible de forcé le passage du grabage collector ???

  6. #6
    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 lastrecrue Voir le message
    La vrais question est ce que c'est possible de forcé le passage du grabage collector ???
    Oui, mais il ne faut pas le faire !


    a++

  7. #7
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 105
    Par défaut
    Citation Envoyé par lastrecrue Voir le message
    La vrais question est ce que c'est possible de forcé le passage du grabage collector ???
    Oui bien sure :

    Mais cela est fort déconseillé, et d'ailleurs cette commande, je pense, ne va pas forcement "faire effectuer un passage du GC".

    Si tu dois vouloire faire cela il doit y'avoir 2 causes :

    - Soit tu n'alloues pas assez de mémoires malgré que celle ci est eventuelement disponible.
    - Soit tu dois effectivement allouer de la mémoire en masse et y'en aura jamais assez et donc peut importe tu ne sauras rien y faire. (Genre charger un fichier texte de 6 giga totalement en mémoire pour une raison inconnue .
    - Soit tu as une erreur qlq part qui fait que des references sont gardées (dans une boucle ou un truc du genre) qu'il faudrait corriger afin d'eviter de vouloir appeler le gc.

    EDIT : ha ben voila jme suis fait avoir j'ai mis trop longtemps a répondre
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Espace mémoire insuffisant
    Par miss_angel dans le forum Visual C++
    Réponses: 6
    Dernier message: 18/04/2013, 03h42
  2. Espace mémoire insuffisant
    Par adrien954 dans le forum C++Builder
    Réponses: 1
    Dernier message: 09/09/2008, 13h41
  3. Atteindre un espace mémoire avec perl
    Par scaleo dans le forum Langage
    Réponses: 3
    Dernier message: 31/03/2006, 19h53
  4. [C][obtenir l'espace mémoire libre]
    Par ronan99999 dans le forum Windows
    Réponses: 4
    Dernier message: 26/10/2004, 08h53
  5. Accéder à un espace mémoire sous XP
    Par keny dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 02/08/2002, 13h37

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