Heim > Java > javaLernprogramm > Wie verwende ich den Befehl jmap in Java?

Wie verwende ich den Befehl jmap in Java?

WBOY
Freigeben: 2023-04-20 22:52:06
nach vorne
1656 Leute haben es durchsucht

Einführung in den jmap-Befehl

jmap (Java Virtual Machine Memory Map) ist ein vom JDK bereitgestelltes Befehlszeilentool, das eine Heap-Dump-Snapshot-Dump-Datei der Java Virtual Machine generieren kann. Darüber hinaus kann der Befehl jmap auch detaillierte Informationen über die Finalize-Ausführungswarteschlange, den Java-Heap und den Methodenbereich anzeigen, z. B. die Speicherplatznutzung, den aktuell verwendeten Garbage Collector, den Generierungsstatus usw.

Wie beim Befehl jinfo gibt es bei der Verwendung auf Windows-Systemen noch einige Einschränkungen. In Windows-Systemen ohne dbgeng.dll müssen die Debugging-Tools für Windows installiert sein, damit der Befehl jinfo ordnungsgemäß funktioniert, und die Umgebungsvariable PATH sollte den Speicherort von jvm.dll enthalten. dbgeng.dll的Windows系统中,必须安装用于Windows的调试工具才能使jinfo命令正常工作,PATH环境变量应该包含jvm.dll的位置。

jmap命令参数

命令语法:

jmap [options] pid
Nach dem Login kopieren

命令参数说明:

option:jmap命令的可选参数。如果没有指定这个参数,jinfo命令会显示Java虚拟机进程的内存映像信息,如下图:

Wie verwende ich den Befehl jmap in Java?

pid:要打印配置信息的Java虚拟机的进程ID。

想要要获取运行的Java虚拟机进程的列表,可以使用ps命令(Linux系统中)或tasklist命令(Windows系统中),如果Java虚拟机进程没有在单独的docker实例中运行,可以使用jps命令。

option都有哪些参数呢?我们来看一下。

-heap

显示Java堆的如下信息:

  • 被指定的垃圾回收算法的信息,包括垃圾回收算法的名称和垃圾回收算法的详细信息。

  • 堆的配置信息,可能是由命令行选项指定,或者由Java虚拟机根据服务器配置选择的。

  • 堆的内存空间使用信息,包括分代情况,每个代的总容量、已使用内存、可使用内存。如果某一代被继续细分(例如,年轻代),则包含细分的空间的内存使用信息。

比如:

Wie verwende ich den Befehl jmap in Java?

-histo[:live]

显示Java堆中对象的统计信息,包括:对象数量、占用内存大小(单位:字节)和类的完全限定名。比如:

Wie verwende ich den Befehl jmap in Java?

要获得某个对象的大小,可以将其总大小除以该对象类型的数量。如果指定了live参数,则只计算活动的对象。比如:

Wie verwende ich den Befehl jmap in Java?

-clstats

显示Java堆中元空间的类加载器的统计信息,包括:

class_loader:当Java虚拟机运行时,类加载器对象的地址
classes:已加载类的数量
bytes:该类加载器加载的所有类的元数据所占的字节数
parent_loader:父类加载器对象的地址,如果没有显示null
alive:是否存活的标识,表示类加载器对象是否将被垃圾回收。
type:该类加载器的类名。

比如:

Wie verwende ich den Befehl jmap in Java?

-finalizerinfo

显示在F-Queue中等待Finalizer线程执行finalize方法的对象。比如:

Wie verwende ich den Befehl jmap in Java?

-dump:[live,]format=b,file=

生成Java虚拟机的堆转储快照dump文件。具体说明如下:

  • live参数是可选的,如果指定,则只转储堆中的活动对象;如果没有指定,则转储堆中的所有对象。

  • format=b表示以hprof二进制格式转储Java堆的内存。

  • file=<filename></filename>用于指定快照dump文件的文件名。

比如:

Wie verwende ich den Befehl jmap in Java?

-F

强制模式。如果指定的pid没有响应,可以配合-dump-histo

jmap-Befehlsparameter

Wie verwende ich den Befehl jmap in Java?Befehlssyntax:

rrreee

Befehlsparameterbeschreibung:

option: Optionale Parameter des jmap-Befehls. Wenn dieser Parameter nicht angegeben ist, zeigt der Befehl jinfo die Speicherbildinformationen des Java Virtual Machine-Prozesses an, wie unten gezeigt:

🎜So verwenden Sie den jmap-Befehl von Java🎜🎜pid: Die Prozess-ID der Java Virtual Machine zum Drucken von Konfigurationsinformationen. 🎜🎜Um die Liste der laufenden Java Virtual Machine-Prozesse abzurufen, können Sie den Befehl ps (in Linux-Systemen) oder den Befehl tasklist (in Windows-Systemen) verwenden. Wenn der Java Virtual Machine-Prozess nicht in einer separaten Docker-Instanz ausgeführt wird, können Sie Folgendes tun: kann jps Order verwenden. 🎜🎜Was sind die Parameter von option? Werfen wir einen Blick darauf. 🎜🎜-heap🎜🎜Zeigt die folgenden Informationen des Java-Heaps an: 🎜
  • 🎜Informationen des angegebenen Garbage-Collection-Algorithmus, einschließlich des Namens des Garbage-Collection-Algorithmus und der Nummer des Garbage-Collection-Algorithmus Details. 🎜
  • 🎜Die Heap-Konfigurationsinformationen können durch Befehlszeilenoptionen angegeben oder von der Java Virtual Machine basierend auf der Serverkonfiguration ausgewählt werden. 🎜
  • 🎜Informationen zur Heap-Speicherplatznutzung, einschließlich Generationsstatus, Gesamtkapazität, verwendetem Speicher und verfügbarem Speicher jeder Generation. Wenn eine Generation weiter unterteilt ist (z. B. die junge Generation), enthält es Informationen zur Speichernutzung für den unterteilten Raum. 🎜
🎜Zum Beispiel: 🎜🎜Javas jmap-Befehl So verwenden Sie 🎜🎜-histo[:live]🎜🎜 Zeigt statistische Informationen zu Objekten im Java-Heap an, einschließlich: Anzahl der Objekte, belegte Speichergröße (Einheit: Bytes) und vollständig qualifizierter Name der Klasse. Zum Beispiel: 🎜🎜So verwenden Sie den jmap-Befehl von Java🎜🎜Zu bekommen eine bestimmte Größe eines Objekts, indem seine Gesamtgröße durch die Anzahl dieses Objekttyps geteilt wird. Wenn der Parameter live angegeben ist, werden nur Live-Objekte gezählt. Zum Beispiel: 🎜🎜So verwenden Sie den jmap-Befehl von Java🎜🎜-clstats 🎜 🎜Zeigt die Statistiken des Klassenladers im Metaspace im Java-Heap an, einschließlich: 🎜🎜class_loader: Wenn die Java Virtual Machine ausgeführt wird, die Adresse des Klassenladerobjekts
classes: Die Anzahl der geladenen Klassenbytes: Die Anzahl der Bytes, die von den Metadaten aller von diesem Klassenlader geladenen Klassen belegt werden.
parent_loader: Die Adresse des übergeordneten Klassenladerobjekts, wenn null nicht angezeigt wird.
alive: Ein Flag, das angibt, ob das Klassenladeobjekt der Garbage Collection unterzogen wird.
Typ: Der Klassenname des Klassenladers. 🎜🎜Zum Beispiel: 🎜🎜So verwenden Sie den jmap-Befehl von Java🎜🎜 - finalizerinfo🎜🎜 zeigt die Objekte an, die in der F-Warteschlange darauf warten, dass der Finalizer-Thread die Finalize-Methode ausführt. Zum Beispiel: 🎜🎜So verwenden Sie den jmap-Befehl von Java🎜🎜-dump : [live,]format=b,file=🎜🎜Generieren Sie eine Heap-Dump-Snapshot-Dump-Datei der Java Virtual Machine. Die spezifischen Anweisungen lauten wie folgt: 🎜
  • 🎜live-Parameter ist optional. Wenn angegeben, werden nur die Live-Objekte im Heap ausgegeben. wenn nicht Wenn angegeben, werden alle Objekte im Heap ausgegeben. 🎜
  • 🎜format=b bedeutet, den Java-Heapspeicher im hprof-Binärformat zu sichern. 🎜
  • 🎜file=<filename></filename> wird verwendet, um den Dateinamen der Snapshot-Dump-Datei anzugeben. 🎜
🎜Zum Beispiel: 🎜🎜Javas jmap-Befehl So verwenden Sie den Force-Modus „ />🎜🎜-F🎜🎜. Wenn die angegebene PID nicht antwortet, kann sie zusammen mit <code>-dump</code> oder <code>-histo</code> verwendet werden. In diesem Modus wird der Live-Parameter nicht unterstützt. Zum Beispiel: 🎜🎜🎜🎜🎜-h und -help🎜🎜zeigen Hilfeinformationen für den jinfo-Befehl an. 🎜

Das obige ist der detaillierte Inhalt vonWie verwende ich den Befehl jmap in Java?. 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