Maison >Java >javaDidacticiel >Apprentissage de la machine virtuelle Java – Réglage de la mémoire
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.
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.
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) !