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 :

Quelle est la taille de la mémoire allouée à la JVM ?


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Points : 26
    Points
    26
    Par défaut Quelle est la taille de la mémoire allouée à la JVM ?
    Bonjour,

    Je sais comment allouer plus de mémoire à la JVM, mais avant cela comment savoir quelle est la taille de la mémoire allouée actuellement à la JVM ?

    Je précise que j'utilise Eclipse et que je suis sous Mac.

    Merci.

    Emilie

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    mémoire par défaut pour la jvm 64M

    Pour en allouer plus utiliser la ligne de commande java avec l'argument -Xmx avec à allouer

    alloue 256 mégas à la jvm qui va se lancer

    Pour eclipse voire le fichier eclipse.ini et la ligne contenant -vmargs
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Points : 26
    Points
    26
    Par défaut
    OK. Merci.
    Et y a t'il une limite ?

  4. #4
    Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    ça dépend de la RAM de ta machine...

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


    Avec Java 5.0, on peut utiliser la classe MemoryMXBean de la nouvelle API de management pour obtenir des informations sur l'état de la mémoire. On récupère une instance de MemoryMXBean via le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean();
    Ensuite, il suffit d'utiliser la méthode getHeapMemoryUsage() qui retournera un objet MemoryUsage contenant le détail de la mémoire utilisé par votre application. Il contient ainsi les informations suivantes :
    • init : La taille initiale de la mémoire utilisé par l'application (généralement 0, sauf si l'on a utilisé l'option -Xms de la JVM).
    • used : La quantité de mémoire qui est réellement utilisée par votre application.
    • committed : La quantité de mémoire qui a été réservée auprès du système d'exploitation.
    • max : La quantité maximale que la JVM est authorisée à réserver auprès du système d'exploitation (modifiable avec l'option [b]-Xmx(/b] de la JVM). Si l'application utilise plus de mémoire cela générera une OutOfMemoryError.


    L'objet MemoryUsage possède bien entendu toutes les méthodes accésseurs pour accéder à ces éléments, mais également une redéfinition de la méthode [b]toString()(/b] afin de les afficher plus simplement. Ainsi le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println( memoryBean.getHeapMemoryUsage() );
    Donnera un résultat de le forme suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    init = 0(0K) used = 436912(426K) committed = 2031616(1984K) max = 530907136(518464K)
    A noter également qu'il est possible de surveiller la mémoire utilisé pour la JVM elle-même (et non pas par votre application) via la méthode getNonHeapMemoryUsage().





    Avec Java 1.4 ou les versions précédentes, on peut utiliser la classe Runtime et ses méthodes maxMemory(), totalMemory() et freeMemory() :

    • maxMemory() représente la quantité maximale que la JVM est authorisée à réserver auprès du système d'exploitation (équivalent de l'attribut max).
    • totalMemory() représente la quantité de mémoire qui a été réservée auprès du système d'exploitation (équivalent de l'attribut committed).
    • freeMemory() représente la quantité de mémoire libre utilisable avant que la JVM n'alloue encore de la mémoire auprès du système (équivalent à la différence entre les attributs committed et used)


    Ainsi pour obtenir un résultat similaire, on peut utiliser le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	Runtime runtime = Runtime.getRuntime();
    	System.out.print( "used : " + ( runtime.totalMemory()-runtime.freeMemory() ) );
    	System.out.print( "  committed : " + runtime.totalMemory() );
    	System.out.println( "  max : " + runtime.maxMemory() );
    Qui donnerait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    used : 446256  committed : 2031616  max : 530907136


    Pour plus d'information sur la gestion de la mémoire : http://gfx.developpez.com/tutoriel/java/gc/

    a++

    PS : comme ce n'est pas dans la faq je le rajoute au thread de contribution...

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Points : 26
    Points
    26
    Par défaut
    Merci beaucoup pour toutes ces informations qui vont m'être très utiles.
    Emilie

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/02/2011, 11h13
  2. [Sockets UDP] Quelle est la taille max d'un message UDP en unicast?
    Par jlassiramzy dans le forum Entrée/Sortie
    Réponses: 30
    Dernier message: 27/02/2007, 10h24
  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. quelle est la taille maximale en nbre de caract d'un chp text
    Par harlock59 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 08/07/2006, 19h43
  5. [SGBD] [PHP/MySQL Query]Quelle est la taille du tableau retourné?
    Par Jean_Benoit dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 07/10/2005, 20h10

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