Heim > Java > javaLernprogramm > Methoden zur Optimierung virtueller Java-JVM-Maschinen

Methoden zur Optimierung virtueller Java-JVM-Maschinen

WBOY
Freigeben: 2023-04-19 10:04:02
nach vorne
1340 Leute haben es durchsucht

jmap Speicherinformationen anzeigen

jmap histo /pid > ./log.txt: Zeigt die Anzahl der Instanzen eines bestimmten Prozesses, die Anzahl der belegten Speicherbytes und die Klasse an, zu der er gehört

Methoden zur Optimierung virtueller Java-JVM-Maschinen

jmap - Heap /pid: Heap-Informationen anzeigen

Methoden zur Optimierung virtueller Java-JVM-Maschinen

Methoden zur Optimierung virtueller Java-JVM-Maschinen

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

Methoden zur Optimierung virtueller Java-JVM-Maschinen

Methoden zur Optimierung virtueller Java-JVM-Maschinen

Starten Sie die visuelle JVM-Schnittstelle zum Importieren über den Befehl jvisualvm die Dump-Datei zur Analyse: Klassenbeispiel anzeigen

Methoden zur Optimierung virtueller Java-JVM-Maschinen

jstack

Deadlock-Analyse: Schreiben Sie einen Deadlock-Code

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();
    }
}
Nach dem Login kopieren

Methoden zur Optimierung virtueller Java-JVM-Maschinen

"Thread-1" Thread-Name; 0x0000000019aa9000 Thread-ID; nid=0x6c4 Die dem Thread entsprechende lokale Thread-ID; java.lang.Thread.State: BLOCKIERTER Thread-Status

Starten Sie den Befehl jvisualvm und wählen Sie den entsprechenden Prozess aus, um den blockierten Thread anzuzeigen

Methoden zur Optimierung virtueller Java-JVM-Maschinen

Jstack analysiert den Thread-Stack mit Informationen zu hoher CPU-Auslastung

Starten Sie eine While-Schleife, um die CPU am Laufen zu halten

1: Überprüfen Sie die Ressourcennutzung des Prozesses

Methoden zur Optimierung virtueller Java-JVM-Maschinen

Es ist offensichtlich, dass dieser Prozess das verursacht Die CPU-Auslastung soll nahezu 100 % betragen.

2. Drücken Sie H, um die von jedem Thread im Prozess belegten Ressourcen anzuzeigen.

Methoden zur Optimierung virtueller Java-JVM-Maschinen

3 Suchen Sie die PID-Spalte, in der die CPU fast 100 % nutzt, was darauf hinweist, dass die Thread-ID 5027 ist, und konvertieren Sie sie in Hexadezimalzahl 13a3 über den Konverter ,

4. Führen Sie jstack 5026|grep -A 10 13a3 über den Befehl jstack aus. Sie können die Stapelinformationen des Threads tid 13a3 abrufen und dann die Ausführungszeilennummer ermitteln, die dazu führt, dass die CPU 100 % belegt

Methoden zur Optimierung virtueller Java-JVM-Maschinen

jinfo zum Anzeigen der JVM-Systemparameter

jinfo -flags /pid: JVM-Parameter anzeigen

Methoden zur Optimierung virtueller Java-JVM-Maschinen

jinfo -sysprops /pid: Java-Systemparameter anzeigen

Methoden zur Optimierung virtueller Java-JVM-Maschinen

Jstat Heap-Speichernutzung und -klasse anzeigen Informationen zur Lademenge

jstat -gc /pid : Garbage-Collection-Statistiken

Methoden zur Optimierung virtueller Java-JVM-Maschinen

S0C: Die Größe des ersten Überlebensbereichs in KB; S1C: Die Größe des zweiten Überlebensbereichs; S0U: Die Nutzungsgröße des ersten Überlebensgebiet; S1U: Das zweite Überlebensgebiet; EC: die Größe von Eden Park; OC: die Größe der alten Generation; Bereich (Metaraum); MU: die Größe des komprimierten Klassenraums; YGC: die Anzahl der Speicherbereinigungen der jungen Generation; Einheit s: Die Anzahl der Garbage Collections der alten Generation; FGCT: Die Verbrauchszeit der Garbage Collection der alten Generation;

NGCMN: minimale Kapazität der neuen Generation; NGCMX: aktuelle Kapazität der neuen Generation; S1C: die Größe des zweiten überlebenden Bereichs ; EC: die Größe des Eden Campus; OGCMN: die maximale Kapazität der alten Generation; OC: aktuelle Größe der alten Generation; Metadatenkapazität; MCMX: aktuelle Größe des Metadatenraums; CCSC: aktuelle Größe des Komprimierungsklassenraums; ; FGC: Die Anzahl der GCs in der alten Generation Methoden zur Optimierung virtueller Java-JVM-Maschinen

jstat -gcnew /pid: Zeigt die Garbage-Collection-Statistiken der neuen Generation an

TT: Die Häufigkeit, mit der das Objekt in der neuen Generation überlebt; Häufigkeit, mit der das Objekt in der neuen Generation überlebt. DSS: erwartete Größe des Überlebensbereichs Methoden zur Optimierung virtueller Java-JVM-Maschinen

jstat -gcnewcapacity/pid: Speicherkapazität der neuen Generation anzeigen

S0CMX: maximale Größe des Überlebensbereichs 1; : maximale Survivor Area 2-Größe; ECMX: maximale Eden Park-Größe Methoden zur Optimierung virtueller Java-JVM-Maschinen

jstat -gcold /pid: Garbage Collection-Statistiken der alten Generation anzeigen

jstat -gcoldcapacity/pid: Speicherkapazität der alten Generation anzeigen Methoden zur Optimierung virtueller Java-JVM-Maschinen

jstat - gcmetacapacity/pid: Statistiken zum Metadatenspeicherplatz anzeigen Methoden zur Optimierung virtueller Java-JVM-Maschinen

Sie können die Startparameter von Java-Anwendungen mit dem Befehl jstat gc -pid 1000 10 optimieren (führen Sie den Befehl alle 1 Sekunde aus, insgesamt 10 Mal), um abzuschätzen, wie viele neue Objekte hinzugefügt werden Die Eden-Fläche pro Sekunde kann je nach Ergebnis angepasst werden. Tatsächlich besteht die Optimierungsidee einfach darin, zu versuchen, die überlebenden Objekte nach jedem Young GC auf weniger als 50 % des Survivor-Bereichs zu reduzieren und sie in der jungen Generation zu belassen. Versuchen Sie, das Objekt nicht in die Jahre zu kommen. Versuchen Sie, die Häufigkeit von Full GC so weit wie möglich zu reduzieren, um die Auswirkungen häufiger Full GC auf die JVM-Leistung zu vermeiden.

Speicherleck

Bei einigen alten Daten, z. B. auf JVM-Ebene, wird der Speicher nicht rechtzeitig bereinigt, was zu immer mehr Datenhäufungen führt, was häufig zu einem vollständigen GC führt im Laufe der Zeit, was zu einem Speicherverlust führt. Sie können die ausgereifte Cache-Architektur ehcache verwenden, die eine LRU-Dateneliminierungsstrategie implementiert hat.

Das obige ist der detaillierte Inhalt vonMethoden zur Optimierung virtueller Java-JVM-Maschinen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage