Maison >Java >javaDidacticiel >Résumé et analyse des techniques de réglage JVM

Résumé et analyse des techniques de réglage JVM

高洛峰
高洛峰original
2017-01-23 10:15:231213parcourir

Ceci est un article technique. Si vous recherchez des articles sur la GC ou l'ajustement de la pureté interne, veuillez lire mes autres articles. Puisqu'il s'agit d'un résumé du réglage de la JVM, je ne dirai pas de bêtises. Les méthodes suivantes ont été collectées sous divers aspects :
1. Mettez à niveau la version JVM. Si 64 bits est disponible, utilisez une JVM 64 bits.
En gros il n'y a rien à expliquer, il est très simple de mettre à jour la JVM vers la dernière version. Si vous utilisez toujours JDK1.4 ou même une JVM antérieure, la première chose à faire est de mettre à niveau. Parce que la JVM de 1.4->1.5->1.6 n'est pas seulement une mise à niveau du numéro de version, ou simplement l'ajout d'un tas de nouvelles fonctionnalités de langage, c'est aussi simple que cela. Au lieu de cela, des améliorations majeures ont été apportées à la JVM. Chaque mise à niveau de version apporte d'énormes améliorations de performances. Surtout quand SUN se rend compte que Java est tout pour un confident (un peu exagéré, mais même le numéro de stock a été changé en JAVA, haha). Si vous visitez souvent le forum JVM de SUN, vous constaterez qu'il y a en réalité de nombreux problèmes avec la JVM. Si vous ne pouvez pas effectuer la mise à niveau vers la version 1.6 pour diverses raisons, vous pouvez effectuer une mise à niveau vers la dernière version de cette version.
2. Choisissez un GC (Gargage Collection) correct.
Car lorsque le programme JAVA est GC, le programme en cours sera arrêté. Surtout pendant le Full GC, cela restera longtemps. Généralement pour les programmes GUI, c'est difficile à accepter (pensez au moment où Eclipse est en pause). Après JAVA5, plusieurs types de GC viennent avec. Vous pouvez choisir celui qui vous convient. Il existe quatre types de collecteur série, collecteur parallèle, collecteur simultané et collecteur de train (obsolète). La collection parallèle est utilisée plusieurs fois dans ce dernier, elle est donc théoriquement plus efficace (vous devez avoir plus de 2CUP, mais maintenant le multicœur devient populaire, haha). Astuce : Après avoir modifié le type de GC, augmentez la quantité de mémoire JVM de manière appropriée.
3. Réglez correctement la taille de la mémoire. Définissez correctement la taille pour chaque zone (jeune, ancienne, permanente) dans le tas JVM.
C'est l'ajustement le plus difficile, car cet ajustement affectera directement l'efficacité du GC. Et comme les types de chaque programme sont différents, il n’existe pas de données universelles. En plus de quelques règles communes, vous devez utiliser des outils (jstat, jvmstat, jconsole, etc.) pour effectuer un réglage minutieux. Plusieurs lignes directrices couramment utilisées sont mentionnées ci-dessous. Utilisez généralement les paramètres suivants pour ajuster -Xms -Xmx-XX:MaxPermSize.
3.1 Augmenter la valeur de -XX:NewRatio (NewSize/MaxNewSize) réduira le nombre de jeunes gcs, mais augmentera le temps des anciens gcs.
3.2 Méthode pour augmenter le GC normal (réduire le Full GC). Augmentez la taille de la zone jeune (jusqu'à 40 %) et surdimensionnez la zone Survivant. Gardez plus d'objets chez la jeune génération.
4. Réduisez l'utilisation des classes, faites attention au chargement et au déchargement des classes et réduisez le nombre de pages JSP.
Les classes sont en fait des objets et seront directement allouées dans la zone de permanente. Même Full GC les collectera rarement. JSP sera également alloué à la zone de permanente, avec le même effet. Si perm est trop grand et dépasse la valeur XX:MaxPermSize, une exception d'espace OutOfMemoryError: PermGen se produira. La solution consiste à augmenter la valeur -XX:MaxPermSize.
5. Évitez d'utiliser -Xnoclassgc
6. S'il s'agit d'un programme RMI, faites attention à ajuster l'heure RMI DGC.
Voici quelques éléments auxquels vous devez prêter attention lors de l'écriture de programmes. GC peut également être réduit pour améliorer les performances de la JVM.
1. N'utilisez pas la méthode System.gc().
Parce que cela générera du Full GC.
2. Allouer le moins de gros objets temporaires (avec des cycles de vie courts) possible
Ils peuvent être attribués directement à l'ancienne zone, qui ne sera collectée que par Full GC.
3. Évitez d'utiliser la méthode finalize().
finalize() augmentera la charge sur GC, utilisez plutôt java.lang.ref.

Pour plus d'articles liés au résumé et à l'analyse des techniques de réglage JVM, veuillez faire attention au site Web PHP chinois !

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