/ / Java VM le tas peut-il devenir plus petit? - java, jvm

Java VM le tas peut-il devenir plus petit? - java, jvm

si je lance un programme java, la machine virtuelle alloue initialement de la mémoire pour le tas, non?

chaque fois que la mémoire utilisée prend plus que disponible, le tas est augmenté, non?

est-il possible que le tas puisse devenir plus petit une fois que moins de mémoire est utilisée?

Merci!

Réponses:

5 pour la réponse № 1

Oui, le ramasse-miettes est libre de réduire la taillede tas s'il découvre après quelques collectes que l'application demande une mémoire plus petite que le tas configuré. Vous pouvez observer cette fonctionnalité dans VisualVM, ici une instance de Tomcat testée avec ab:

Mémoire VisualVM

Comme vous pouvez voir la taille du tas (série orange)change fondamentalement après chaque GC (goutte dans la série bleue). Parfois, la taille du tas augmente, parfois diminue. JVM est libre d'ajuster la taille en fonction de l'utilisation réelle (ici, la taille totale du segment de mémoire était définie sur 1G).


0 pour la réponse № 2

Eh bien, le processus Java commence par une premièreallocation de mémoire pour le segment de mémoire et allocation maximale pour ledit segment de mémoire. C’est ce que vous faites avec les arguments de ligne de commande -Xms et Xmx jvm. Ceux-ci ne peuvent pas changer pendant l’exécution du processus.

La quantité réelle de mémoire utilisée par vos instances d'objet peut diminuer après un garbage collection.