Maison  >  Article  >  Java  >  Apprentissage de la machine virtuelle Java – Réglage de la mémoire

Apprentissage de la machine virtuelle Java – Réglage de la mémoire

黄舟
黄舟original
2017-02-17 10:32:001583parcourir

Le réglage JVM concerne principalement le réglage de la gestion de la mémoire, notamment le contrôle de la taille de chaque génération et de la stratégie GC. Étant donné que GC suspendra les threads d'application lors du démarrage du garbage collection, ce qui affecte sérieusement les performances, le but du réglage est de minimiser le temps de pause des threads d'application provoqués par GC et de réduire le nombre de Full GC.

Réglage de la taille des générations

Les paramètres les plus critiques : -Xms, -Xmx, -Xmn, -XX : SurvivorRatio, -XX:MaxTenuringThreshold, -XX:PermSize, -XX:MaxPermSize

-Xms, -Xmx sont généralement définis sur la même valeur pour éviter d'étendre continuellement la mémoire JVM pendant l'exécution. Cette valeur détermine la mémoire maximale que le tas JVM peut utiliser.

-Xmn détermine la taille de l'espace de nouvelle génération. Le rapport des trois zones de la nouvelle génération Eden, S0 et S1 peut être contrôlé par -XX:SurvivorRatio (si le la valeur est 4, cela signifie : Eden :S0:S1 = 4:3:3 )

-XX:MaxTenuringThreshold contrôle le nombre de fois que l'objet entre dans la vieillesse après un GC mineur, ce paramètre n'est valable que dans Serial Serial GC.

-XX:PermSize, -XX:MaxPermSize sont utilisés pour contrôler la taille de la zone de méthode, généralement définie sur la même valeur.

1. Évitez de définir la taille de la nouvelle génération trop petite

Lorsque le paramètre de nouvelle génération est trop petit, deux phénomènes évidents se produiront. L'un est que le nombre de GC mineurs est fréquent, et l'autre est que les objets GC mineurs peuvent entrer directement dans l'ancienne génération. Lorsqu'il n'y a pas suffisamment de mémoire dans l'ancienne génération, le Full GC est déclenché.

2. Évitez de définir la nouvelle génération trop grande

Si la jeune génération est trop grande, cela entraînera deux problèmes : premièrement, l'ancienne génération deviendra plus petite, ce qui peut conduire à des exécutions fréquentes de Full GC. Deuxièmement, le temps nécessaire aux GC mineurs pour exécuter le recyclage augmentera considérablement ;

3. Évitez que la zone du survivant soit trop grande ou trop petite

-XX : Plus la valeur du paramètre SurvivorRatio est grande, cela signifie que la zone Eden devient plus grande et que le nombre de GC mineurs va diminuer, mais les deux Les zones de survivant deviennent plus petites. Si les objets qui dépassent la taille de la mémoire de la zone de survivant sont stockés dans le mineur. S'il n'est toujours pas recyclé après GC, il entrera directement dans la vieillesse,

-XX : La valeur du paramètre SurvivorRatio est trop petite, ce qui signifie que la zone Eden devient plus petite et que le nombre de déclencheurs GC mineurs augmentera. La zone Survivor devient plus grande, ce qui signifie. que plus peut être stocké dans le mineur Les objets survivants après GC ne peuvent pas entrer dans la vieillesse.

4.

La valeur de la période de survie de nouvelle génération détermine combien de fois l'objet de nouvelle génération entre dans l'ancienne génération après avoir subi un GC mineur. Par conséquent, cette valeur doit être ajustée en fonction de votre propre application. Cette valeur du paramètre Jvm correspond à -XX:MaxTenuringThreshold et la valeur par défaut est 15 fois.

Réglage GC

Correspondance GC

Voir un autre garbage collector

2. Afficher les paramètres JVM

Outil de ligne de commande Outil visuel

Paramètres du journal 3.GC

-XX : PrintGCDetails

-XX : PrintGCTimeStamps

-Xloggc:c:javagc.log


Ce qui précède est le contenu de l'apprentissage de la machine virtuelle Java - réglage de la mémoire. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn