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 :

Forcer augmentation de la RAM allouée à la JVM


Sujet :

Java

  1. #1
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut Forcer augmentation de la RAM allouée à la JVM
    Bonjour,

    j'utilise l'option -Xmx...M pour gérer la RAM que j'accorde à la JVM pour l'exécution de mes différents programmes.

    Exceptionnellement, j'ai un TRES lourd programme (traitement d'image avec une image 8600x4600) et je souhaiterai augmenter le mémoire allouée.
    Malheureusement, je rencontre très vite une erreur "Could not reserved enough space for object heap"

    Existe t-il une solution pour forcer l'augmentation de la mémoire, quitte à swapper au maximum ?


    Merci par avance.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Points : 268
    Points
    268
    Par défaut
    il faut utiliser -Xms...m et -Xmx...m

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    940
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 940
    Points : 1 816
    Points
    1 816
    Par défaut
    Sur Windows 32 bits, la mémoire maximum varie de 1.4 Go à 1.6 Go.

  4. #4
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Malheureusement il n'est pas possible de modifier la taille maximum du heap pendant l'exécution du programme.

    Une solution serait de passer par Process pour appeler une nouvelle JVM avec les paramètres que l'on souhaite...


    a++

  5. #5
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Citation Envoyé par tupac25 Voir le message
    il faut utiliser -Xms...m et -Xmx...m
    J'utilise -Xmx...M, qu'est ce que le "S' va changer ?
    "S" pour SWAP ?


    Citation Envoyé par BugFactory Voir le message
    Sur Windows 32 bits, la mémoire maximum varie de 1.4 Go à 1.6 Go.
    J'ai réussi à passer -Xmx3000M sur ma machine qui comporte normalement 4Go de RAM, mais en fait vu les performances disque/cpu/vitesse, la RAM était très peu utilisée et le SWAP est arrivé très vite.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  6. #6
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Malheureusement il n'est pas possible de modifier la taille maximum du heap pendant l'exécution du programme.
    Pendant ok... mais avant ? Peut on mettre beaucoup plus ?


    Citation Envoyé par adiGuba Voir le message
    Une solution serait de passer par Process pour appeler une nouvelle JVM avec les paramètres que l'on souhaite...
    Là j'avoue ne pas connaître :-(
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  7. #7
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    J'utilise -Xmx...M, qu'est ce que le "S' va changer ?
    "S" pour SWAP ?
    "S" pour "Start".

    C'est à dire que cela correspond à la mémoire directement alloué au lancement de l'application (cela permet d'éviter de ré-allouer plusieurs fois la mémoire si on sait que l'application va en consommer beaucoup).


    a++

  8. #8
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    "S" pour "Start".
    C'est à dire que cela correspond à la mémoire directement alloué au lancement de l'application (cela permet d'éviter de ré-allouer plusieurs fois la mémoire si on sait que l'application va en consommer beaucoup).
    Ok merci.
    Mais est on limité pour cette mémoire ?

    Et du coup... que signifie le M ?
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  9. #9
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    Pendant ok... mais avant ? Peut on mettre beaucoup plus ?
    Heu... C'est pendant que tu ne peux pas modifier les paramètres Xmx et Xms.
    Au démarrage tu peux mettre n'importe quelle valeurs (il faut toutefois utiliser des multiples de 1024 et que cela soit possible sur ton OS).


    Citation Envoyé par ToTo13 Voir le message
    Là j'avoue ne pas connaître :-(
    Je pensais que tu voulais modifier le Xmx pendant l'exécution de l'application.
    Une solution aurait été de lancer un nouveau programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	Process process = new ProcessBuilder("java", "-Xms2g", "-Xmx4g", "-jar", "TonJar.jar", "param1", "param2" )
    		.start();
    	// Puis traiter correctement les flux d'entrées/sorties (voir les Tutos)
    Citation Envoyé par ToTo13 Voir le message
    Ok merci.
    Mais est on limité pour cette mémoire ?
    Cela dépend de ton système hôte, mais la limite est la même que pour -Xmx (comme dit plus haut les Windows 32bits sont limité à 1.4/1.6Go)

    Citation Envoyé par ToTo13 Voir le message
    Et du coup... que signifie le M ?
    La taille maximum autorisé, au delà de laquelle cela provoquera un OutOfMemoryException...

    Tu peux obtenir ces infos avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	MemoryMXBean memory = ManagementFactory.getMemoryMXBean();
    	System.out.println( memory.getHeapMemoryUsage() );
    Chez moi cela donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    init = 16777216(16384K) used = 296088(289K) committed = 16252928(15872K) max = 259522560(253440K)
    • init = taille initiale de la mémoire = -Xms
    • used = taille consommé par le programme actuellement
    • committed = taille réellement réservé auprès de l'OS
    • max = taille maximum qui pourra être réservé = -Xmx




    a++

  10. #10
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Sur mon fixe (Window XP 64), je ne peux mettre plus que -Xmx1g.

    Sur le portable (Mac OS X 10.6), visiblement je peux mettre ce que je veux (j'ai essayé 10g et le programme s'est lancé correctement).

    Je vais faire quelques tests avant de clôturer la discussion.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Points : 268
    Points
    268
    Par défaut
    As tu esseyé de mettre les 2 paramètres? Par exemple (-Xms1g -Xmx2g)

  12. #12
    Invité
    Invité(e)
    Par défaut
    Salut

    Citation Envoyé par ToTo13 Voir le message
    Sur mon fixe (Window XP 64), je ne peux mettre plus que -Xmx1g.
    Est-ce bien une jvm 64 bits que tu utilises sur ton win xp ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java -d64 -version

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

Discussions similaires

  1. Question Ram utilisée programme/JVM
    Par lovelace63 dans le forum Général Java
    Réponses: 8
    Dernier message: 16/04/2013, 08h34
  2. Comment augmenter la mémoire vive allouée à Python?
    Par syrius31 dans le forum Général Python
    Réponses: 19
    Dernier message: 28/03/2011, 17h20
  3. Quelle est la taille de la mémoire allouée à la JVM ?
    Par emie31 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 12/11/2006, 22h42
  4. Réponses: 5
    Dernier message: 08/11/2006, 12h41
  5. [Perf]comment on fait pour augmenter la RAM allouée?
    Par nico2280 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 08/11/2005, 18h55

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