Maison  >  Article  >  Java  >  Méthodes de réglage des machines virtuelles Java JVM

Méthodes de réglage des machines virtuelles Java JVM

WBOY
WBOYavant
2023-04-19 10:04:021298parcourir

jmap Afficher les informations sur la mémoire

jmap histo /pid > ./log.txt : afficher le nombre d'instances d'un certain processus, le nombre d'octets de mémoire occupés et la classe à laquelle il appartient

Méthodes de réglage des machines virtuelles Java JVM

jmap - tas /pid : Afficher les informations sur le tas

Méthodes de réglage des machines virtuelles Java JVM

Méthodes de réglage des machines virtuelles Java JVM

jmap ‐dump:format=b,file=app.hprof /pid

Méthodes de réglage des machines virtuelles Java JVM

Méthodes de réglage des machines virtuelles Java JVM

Démarrez l'interface de gestion visuelle jvm via la commande jvisualvm pour importer le fichier de vidage pour analyse : Afficher la classe Exemple

Méthodes de réglage des machines virtuelles Java JVM

jstack

Analyse du blocage : écrire un morceau de code de blocage

public class DeadLockTest {
    private final static Object lock1 = new Object();
    private final static Object lock2 = new Object();
    public static void main(String[] args) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                synchronized (lock1) {
                    try {
                        System.out.println(Thread.currentThread().getName() + ": get the lock1");
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    synchronized (lock2) {
                        System.out.println(Thread.currentThread().getName() + ": get the lock2");
                    }
                }
            }
        }).start();
        new Thread(new Runnable() {
            @Override
            public void run() {
                synchronized (lock2) {
                    try {
                        System.out.println(Thread.currentThread().getName() + ": get the lock2");
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    synchronized (lock1) {
                        System.out.println(Thread.currentThread().getName() + ": get the lock1");
                    }
                }
            }
        }).start();
    }
}

Méthodes de réglage des machines virtuelles Java JVM

Nom du fil "Thread-1" prio=5 priorité=5 ; 0x0000000019aa9000 thread id; nid=0x6c4 L'identifiant du thread local nid correspondant au thread ; java.lang.Thread.State : BLOCKED thread state

Démarrez la commande jvisualvm et sélectionnez le processus correspondant pour afficher le thread bloqué

Méthodes de réglage des machines virtuelles Java JVM

Jstack analyse la pile de threads avec une utilisation élevée du processeur Informations

Démarrez une boucle while pour que le processeur continue de fonctionner

1 top -p /pid : Vérifiez l'utilisation des ressources du processus

Méthodes de réglage des machines virtuelles Java JVM

Il est évident que ce processus provoque le. L'utilisation du processeur doit être proche de 100 %.

2. Appuyez sur H pour afficher les ressources occupées par chaque thread dans le processus

Méthodes de réglage des machines virtuelles Java JVM

3. Recherchez la colonne PID où le processeur utilise près de 100 %, indiquant que le thread tid est 5027, et convertissez-la en hexadécimal en 13a3 via le convertisseur,

4. Exécutez jstack 5026|grep -A 10 13a3 via la commande jstack, vous pouvez obtenir les informations de pile du thread tid 13a3, puis trouver le numéro de ligne d'exécution qui fait que le CPU occupe 100 %

Méthodes de réglage des machines virtuelles Java JVM

jinfo pour afficher les paramètres du système jvm

jinfo -flags /pid : Afficher les paramètres jvm

Méthodes de réglage des machines virtuelles Java JVM

jinfo -sysprops /pid : Afficher les paramètres du système java

Méthodes de réglage des machines virtuelles Java JVM

Jstat Afficher l'utilisation et la classe de la mémoire du tas chargement des informations sur la quantité

jstat -gc /pid : Statistiques de collecte des déchets

Méthodes de réglage des machines virtuelles Java JVM

S0C : La taille de la première zone survivante, en Ko S1C : La taille de la deuxième zone survivante ; zone survivante ; S1U : la deuxième zone survivante EC : la taille d'Eden Park ; EU : la taille d'Eden Park ; OC : la taille de l'ancienne génération ; zone (métaespace) ; MU : la taille de la zone de méthode ; CCSC : Taille de l'espace de classe compressé ; CCSU : Taille d'utilisation de l'espace de classe compressé ; YGC : Le nombre de garbage collection de jeune génération ; unit s ; FGC : le nombre de garbage collection d'ancienne génération ; FGCT : le temps de consommation de garbage collection d'ancienne génération, unit s ;

NGCMN : capacité minimale de la nouvelle génération ; NGCMX : capacité maximale de la nouvelle génération ; NGC : capacité actuelle de la nouvelle génération S0C : la taille de la première zone survivante ; ; EC : la taille de l'Eden Campus ; OGCMN : la capacité minimale de l'ancienne génération ; OGCMX : la taille maximale de l'ancienne génération ; OC : la taille actuelle de l'ancienne génération ; capacité des métadonnées ; MCMX : capacité maximale des métadonnées ; MC : taille actuelle de l'espace des métadonnées ; CCSMN : taille minimale de l'espace de la classe de compression ; CCSMX : taille maximale de l'espace de la classe de compression ; CCSC : taille actuelle de l'espace de la classe de compression ; ; FGC : Le nombre de GC dans l'ancienne génération Méthodes de réglage des machines virtuelles Java JVM

jstat -gcnew /pid : Afficher les statistiques de garbage collection de la nouvelle génération

TT : Le nombre de fois où l'objet survit dans la nouvelle génération ; nombre de fois où l'objet survit dans la nouvelle génération Le nombre maximum de fois ; DSS : taille attendue de la zone de survivant Méthodes de réglage des machines virtuelles Java JVM

jstat -gcnewcapacity/pid : Afficher la capacité de mémoire de la nouvelle génération

S0CMX : taille maximale de la zone de survivant 1 S1CMX ; : taille maximale de la zone de survivant 2 ECMX : taille maximale d'Eden Park Méthodes de réglage des machines virtuelles Java JVM

jstat -gcold /pid : Afficher les statistiques de collecte des ordures d'ancienne génération

jstat -gcoldcapacity/pid : Afficher la capacité de mémoire d'ancienne génération Méthodes de réglage des machines virtuelles Java JVM

jstat - gcmetacapacity/pid : Afficher les statistiques sur l'espace des métadonnées Méthodes de réglage des machines virtuelles Java JVM

Vous pouvez optimiser les paramètres de démarrage de l'application Java via la commande jstat gc -pid. jstat -gc pid 1000 10 (exécuter la commande toutes les 1 seconde, 10 fois au total) pour estimer le nombre d'objets qui seront ajoutés à la zone Eden. par seconde. Vous pouvez utiliser le temps d'ajustement des résultats spécifiques. En fait, l'idée d'optimisation est simplement d'essayer de faire en sorte que les objets survivants après chaque Young GC représentent moins de 50 % de la zone Survivor, et de les conserver dans la jeune génération. Essayez de ne pas laisser l'objet entrer dans la vieillesse. Minimisez la fréquence des Full GC pour éviter l’impact des Full GC fréquents sur les performances de la JVM.

Fuite de mémoire

Pour certaines données anciennes, telles que la mémoire au niveau JVM, n'est pas nettoyée à temps, ce qui entraîne un empilement de plus en plus de données. Au fil du temps, un GC complet sera fréquemment provoqué, entraînant des fuites de mémoire. Vous pouvez utiliser l'architecture de cache mature ehcache, qui a mis en œuvre une stratégie d'élimination des données LRU.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer