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
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
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part java -Xmx256M
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.
ça dépend de la RAM de ta machine...
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 :
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean();
- 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 :
Donnera un résultat de le forme suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part System.out.println( memoryBean.getHeapMemoryUsage() );
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().
Code : Sélectionner tout - Visualiser dans une fenêtre à part init = 0(0K) used = 436912(426K) committed = 2031616(1984K) max = 530907136(518464K)
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 :
Qui donnerait ceci :
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() );
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...
Merci beaucoup pour toutes ces informations qui vont m'être très utiles.
Emilie
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager