Vorwort
In diesem Artikel werden hauptsächlich die Fehler zur Verfassungsbearbeitung von Java -Virtual -Maschinen vorgestellt. Diese im Artikel erwähnten Tools umfassen:
| Name | Hauptfunktionen |
| JPS | JVM Process Status -Tool zeigt alle Prozesse mit virtuellen Maschine in Hotspot im angegebenen System an. Normalerweise lokaler Gastgeber |
| jstat | JVM -Statistiküberwachungsinstrument, mit der zur Erfassung von Betriebsdaten aller Aspekte der virtuellen Hotspot -Maschine verwendet wird |
| Jinfo | Konfigurationsinformationen für Java zeigen Informationen zum virtuellen Maschinenkonfiguration an |
| JMAP | Speicherkarte für Java generiert den Speicherspeicher -Snapshot eines virtuellen Maschine (Heapdump -Datei). |
| Jhat | Der JVM Heap -Dumptum Browser wird verwendet, um Heapdump -Dateien zu analysieren. Es wird ein HTTP/HTML -Server festgelegt, sodass Benutzer die Analyseergebnisse im Browser anzeigen können. |
| JStack | Stack Trace für Java, Zeigt Thread -Schnappschüsse virtueller Maschinen an |
JPS: Virtual Machine Process Status Tool
Die Funktion von JPS ähnelt dem PS -Befehl in Unix/liunx. Es ist nur so, dass es den laufenden Prozess der virtuellen Maschine ausdruckt und den Namen der Hauptklasse der virtuellen Maschinenausführung und die eindeutige ID für virtuelle Maschine dieser Prozesse (lokale Virtual Machine Identifier, LVMID, in der Regel die Systemprozess -ID) angezeigt.
JPS -Befehlsformat:
JPS [Optionen] [HostID]
JPS kann den Remote Virtual Machine Process Status des RMI -Dienstes über das RMI -Protokoll abfragen, und HostID ist der in der RMI -Registrierung registrierte Hostname.
JPS Weitere gängige Optionen:
-Q Ausgabe nur LVMID, wobei der Name der Hauptklasse weggelassen wird;
-M Ausgangsparameter übergeben an die Haupt- () -Funktion der Hauptklasse, wenn der Prozess der virtuellen Maschine gestartet wird.
-l Ausgabe des vollständigen Namens der Hauptklasse. Wenn der Prozess ein JAR -Paket ausführt, geben Sie den JAR -Pfad aus.
-V Ausgabe -JVM -Parameter Wenn der Prozess der virtuellen Maschine startet.
JPS -Befehlsbeispiel:
[root@localhost ~]# jps -l3914 org.zhangyoubao.payService.app12180 sun.tools.jps.jps6913 org.zhangyouba.userprofiler.app
JStat: Überwachungsinstrument für Virtual Machine Statistics
JStat ist ein Tool, mit dem verschiedene Betriebsstatusinformationen von virtuellen Maschinen überwacht werden. Es kann laufende Parameter wie Klassenlast, Speicher gc.jit in lokalen oder remote virtuellen Maschinenprozessen anzeigen.
JSTAT -Befehlsformat:
JSTAT [Option VMID [Intervall [s | ms] [count]]]]
Intervall und Graf stellen Abfrageintervalle und -zeiten dar. Wenn diese beiden Parameter weggelassen werden, bedeutet dies nur einmal.
Andere häufig verwendete Optionen für JSTAT:
-Kassende Überwachung der Anzahl der Last/Entladen der Klasse und der Ladezeit des Gesamtraums;
-Compiler gibt Methoden, zeitaufwändige und andere Informationen aus, die vom JIT-Compiler zusammengestellt wurden;
-Abdruckkompilierung Die Methode, die eine JIT -kompilierte Methode ausgibt;
-GC überwacht den Status des Java -Haufens;
-GCCAPACITY Der Überwachungsinhalt ist im Grunde genommen der gleiche wie -gc, aber der Ausgang konzentriert sich auf den maximalen/minimalen Raum jedes Java -Bereichs.
-Gcutil Der Überwachungsinhalt ist im Grunde genommen der gleiche wie -gc, aber der Ausgang konzentriert sich auf die Nutzung des Raums belegt 100%.
-GcCause Wie die Funktion -gcutil -Funktion verursacht die zusätzliche Ausgabe den letzten GC.
-GcNew überwacht den Status der neuen Generation von GCs;
-GcNewCapacity überwacht die neue Generation und gibt genauso wie -gccapacity aus;
-Gcold überwacht den GC -Status bei älteren Menschen;
-GcoldCapacity überwacht ältere Menschen und gibt genauso wie -gccapacity aus;
-GcPerMcapactiy überwacht die dauerhafte Generation (Codefläche), gibt genauso wie -gccapacity aus;
JSTAT -Befehlsbeispiel:
[root@localhost ~]# JSTAT -GC 6913 S0C S1C S0U S1U EU EU OU PC PU YGC YGCT FGC FGCT GCT 34048.0 34048.0 0.0 3217.8 272640.0 171092.7 68326262644.0 168910.7 46872.0 278326262644.0 168910.7 46872.0 278326262644.0 168910.7 46872.0 278326262644.0 168910.7 46872.0 278326262.0) 380.644 69 3.447 384.091
JInfo: Java -Konfigurationsinformationstool
Die Funktion von JINFO besteht darin, verschiedene Parameter der virtuellen Maschine in Echtzeit anzusehen und anzupassen.
Jinfo -Befehlsformat:
Jinfo [Option] PID
Andere häufig verwendete Optionen für Jinfo:
-Flag name = value ändern Parameter
-Flag -Name Parameter Parameter
Beispiel Jinfo -Befehl:
[root@localhost ~]# jinfo 6913Attaching zu verarbeiten id 6913, bitte warte ... debugger erfolgreich angeschlossen. -Dserver.root =/usr/local/user_profiler -dcom.sun.management.jmxremote.port = 7003 -dcom.sun.management.jmxremote.ssl = false -dcom.sun.Management.jmxremote.authenticate = false -verbose: gc -xx:+pRINGGCDADENTELS: -Xx:+printgcDatestamps -xx:+useconcmarksweepgc
JMAP: Java Memory Mapping Tool
Der Befehl JMAP kann verwendet werden, um Heapspeicher -Schnappschüsse (Dump -Dateien) zu erstellen. Es kann auch die Details der Finalize-Warteschlange (Self-Save-Warteschlange), Java Heap und Code Area überprüfen.
JMAP -Befehlsformat:
JMAP [Option] vmid
Andere häufig verwendete Optionen für JMAP:
-Dump erzeugt einen Schnappschuss des Java Heap -Speichers. Format: -dump: [live,] format = b, file = <filename>;
-FinalizerInfo zeigt ein Objekt in F-Queue an, das auf das Finalizer-Phänomen wartet, um die Abschlussmethode auszuführen.
-HEAP zeigt die detaillierten Informationen des Java -Heaps an, z.
-Histo zeigt Statistiken von Objekten im Haufen an, einschließlich Klassen, Instanzbüchern und Gesamtkapazität;
-Permstat Verwenden Sie Classloader als statistisches Portal, um die Speicherinformationen der dauerhaften Generation anzuzeigen.
-F Wenn die Option Virtual Machine Process Heap-Dump nicht reagiert, können Sie diese Option verwenden, um einen Dump-Snapshot zu erzwingen.
JMAP -Befehlsbeispiel:
[root@localhost ~]# jmap -histo 6913|head -20 num #instances #bytes class name---------------------------------------------- 1: 1864966 113459432 [C 2: 201846 49201192 [B 3: 1597065 38329560 java.lang.String 4: 117477 15037056 org.zhangyoubao.thriftdef.Userusefulinfo 5: 47104 11072048 [I 6: 268631 8596192 Java.util.HashMap $ Eintrag com.mysql.jdbc.connectionPropertiesimpl org.zhangyoubao.common.cache.adv.Node 13: 127027 4064864 Java.util.Concurrent com.mysql.jdbc.field 17: 4230 2943840 <Instanceklassklass>
wobei [C=char[],[B=byte[],[S=short[],[I=int[],[[I=int[][] .
JHAT: Tool für Virtual Machine Heap Transfer Snapshot Analyse Analyse
Der JHAT -Befehl wird in Verbindung mit JMAP verwendet und wird verwendet, um Dump -Dateien zu analysieren, die von JMAP generiert werden. JHAT verfügt über einen integrierten Mini-HTTP/HTML-Server. Nachdem die Analyseergebnisse der generierten Dump -Datei im Browser angezeigt werden können.
JHAT -Befehlsformat:
JMAP -Dateiname
JHAT -Befehlsbeispiel:
[root@localhost ~]# jhat html_intercept_server.dump Lesen von html_intercept_server.dump ... Dump -Datei Mi erstellt. Auf Port 7000server ist bereit.
JStack: Java Thread Stack Trace -Tool
JStack wird verwendet, um einen Thread -Schnappschuss der aktuellen Zeit der virtuellen Maschine zu generieren. Thread -Schnappschüsse sind der Method -Stack -Plan, den jeder Thread der aktuellen virtuellen Maschine ausführt. Der Hauptzweck der Erzeugung von Thread -Schnappschüssen besteht darin, die Gründe zu finden, warum der Faden für lange Zeit inneiert wird. Wenn der Thread pausiert, verwenden Sie JStack, um zu sehen, was die nicht reagierenden Threads im Hintergrund tun oder auf welche Ressourcen warten.
JStack -Befehlsformat:
JStack [Option] vmid
JStack andere Optionen:
-F Wenn die normalerweise nicht beantwortete Ausgabeanforderung beantwortet wird, zwingen Sie den Thread -Stapel, auszugeben.
-l Zeigen Sie zusätzliche Informationen zum Sperre zusätzlich zum Anzeigen des Stapels an.
-M Wenn eine lokale Methode aufgerufen wird, kann der Stapel von C/C ++ angezeigt werden.
JStack -Befehlsbeispiel:
[root@localhost ~]# JStack 29577 | Kopf -2016-11-23 12: 58: 23full Thread Dump OpenJDK Server VM (24.91-B01 Mischmodus): "Pool-1-thread-7261" PRIO = 10 TID = 0x0893a400 NID = 0x6b0d auf Erkrankung [0x0893a400 usw. java.lang.thread.state: timed_waiting (parken) at sun.misc.unsafe.park (native Methode) - Parken zum Warten auf <0x75b5b400> (a java.util.concurrent java.util.concurrent.locks.locksupport.parknanos (locksupport.java:226) bei java.util.concurrent java.util.concurrent.synchronousqueue $ transferStack.transfer (synchronousqueue.java:359) unter java.util.concurrent java.util.concurrent.threadpoolexecutor.gettask (threadpoolexecutor.java:1068) unter java.util.concurrent.threadpoolexecutor.runworker (threadpoolexecutor.java:1130) unter java.util.concurrent.threadpoolexecutor $ worker.run (threadpoolexecutor.java:615) bei java.lang.thread.run.java:745) "service_hot_lscs-0" Dämonung Prio = 10x6982dc00 nid = 0x6aeN Warterieren auf Bedingung = 0x6982DC00 NIDC00 NIDS = 0x6AEB auf die Bedingung = 0x6982dc00 NIDC00 NIDC00 NIDS = 0x6aB auf Bedingung auf Bedingung auf Bedingung auf Bedingung auf Bedingung zuzustimmen. java.lang.thread.state: Timed_waiting (schlafend) bei java.lang.thread.sleep (native Methode) unter org.zhangyoubao.video.client.runner.simplevideorunner.dowork (simplevideorunner.java:150)))
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, der Inhalt dieses Artikels wird Ihnen bei Ihrem Studium oder Ihrer Arbeit helfen. Wenn Sie Fragen haben, können Sie eine Nachricht zur Kommunikation überlassen.