Vous pouvez contrôler la taille du tas avec les paramètres JVM suivants:
-Xmsvalue
-Xmxvalue
-XX: MinHeapFreeRatio = minimum
-XX: MaxHeapFreeRatio = maximum
-XX: NewRatio = rapport
-XX: NewSize = taille
-XX: MaxNewSize = taille
-XX: + AggressiveHeap
Les -Xms et les paramètres définissent la -Xmx tailles de tas minimales et maximales, respectivement. Comme le GC se produit lorsque les générations se remplissent, le débit est inversement proportionnel à la quantité de mémoire disponible. Par défaut, la JVM augmente ou réduit le tas de chaque GC pour essayer de conserver la proportion d'espace libre aux objets vivants de chaque collection dans une plage spécifique. Cette plage est définie en pourcentage par les paramètres -XX: MinHeapFreeRatio = minimum et -XX: MaxHeapFreeRatio = maximum; et la taille totale délimitée par -Xms et -Xmx.
Définissez les valeurs de -Xms et -Xmx comme étant égales pour une taille de segment de mémoire fixe. Lorsque le tas augmente ou diminue, la machine virtuelle Java doit recalculer les anciennes et les nouvelles tailles de génération afin de conserver un NewRatio prédéfini.
Les paramètres NewSize et MaxNewSize contrôlent la taille minimale et maximale de la nouvelle génération. Réglez la nouvelle taille de la génération en réglant ces paramètres de manière égale. Plus la génération est jeune, moins il y a de collections mineures. La taille de la jeune génération par rapport à l'ancienne génération est contrôlée par NewRatio. Par exemple, la valeur -XX: NewRatio = 3 signifie que le rapport entre l'ancienne et la jeune génération est de 1: 3, la taille combinée d'eden et des espaces survivants sera le quart du tas.
Par défaut, le serveur d'applications est appelé avec la machine JVM Java HotSpot Server. La valeur NewRatio par défaut pour la machine JVM du serveur est 2: l'ancienne génération occupe les 2/3 du tas tandis que la nouvelle génération occupe 1/3. La nouvelle génération plus grande peut accueillir beaucoup plus d'objets de courte durée, ce qui réduit le besoin de collections majeures lentes. L'ancienne génération est encore suffisamment grande pour contenir de nombreux objets à vie longue.
Pour la taille du tas Java:
fixe le montant total de la mémoire vous pouvez vous permettre de la machine virtuelle Java. En conséquence, tracer votre propre mesure de performance par rapport aux jeunes générations pour trouver le meilleur réglage.
Mettez beaucoup de mémoire à la disposition de la jeune génération. La valeur par défaut est calculée à partir de NewRatio et du paramètre -Xmx.
De plus grands espaces d'éden ou de génération plus jeunes augmentent l'espacement entre les GC complets. Mais les jeunes collections spatiales pourraient prendre un temps proportionnellement plus long. En général, gardez la taille d'eden entre un quart et un tiers de la taille maximale du tas. L'ancienne génération doit être plus grande que la nouvelle génération.