suchen
HeimJavajavaLernprogrammWie verwende ich den Befehl jmap in Java?

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

命令参数说明:

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!

Stellungnahme
Dieser Artikel ist reproduziert unter:亿速云. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Wie trägt das Klassenloader -Subsystem in der JVM zur Unabhängigkeit der Plattform bei?Wie trägt das Klassenloader -Subsystem in der JVM zur Unabhängigkeit der Plattform bei?Apr 23, 2025 am 12:14 AM

Der Klassenlader stellt die Konsistenz und Kompatibilität von Java-Programmen auf verschiedenen Plattformen durch ein einheitliches Klassendateiformat, dynamische Lade-, übergeordnete Delegationsmodell und plattformunabhängige Bytecode und erreicht Plattformunabhängigkeit.

Erstellt der Java-Compiler plattformspezifischen Code? Erklären.Erstellt der Java-Compiler plattformspezifischen Code? Erklären.Apr 23, 2025 am 12:09 AM

Der vom Java-Compiler generierte Code ist plattformunabhängig, aber der Code, der letztendlich ausgeführt wird, ist plattformspezifisch. 1. Java-Quellcode wird in plattformunabhängige Bytecode zusammengestellt. 2. Die JVM wandelt Bytecode für eine bestimmte Plattform in den Maschinencode um und stellt den plattformübergreifenden Betrieb sicher, aber die Leistung kann unterschiedlich sein.

Wie geht das JVM mit Multithreading auf verschiedenen Betriebssystemen um?Wie geht das JVM mit Multithreading auf verschiedenen Betriebssystemen um?Apr 23, 2025 am 12:07 AM

Multithreading ist für die moderne Programmierung wichtig, da es die Reaktionsfähigkeit und die Nutzung der Ressourcen verbessern und komplexe gleichzeitige Aufgaben erledigen kann. JVM sorgt für die Konsistenz und Effizienz von Multithreads auf verschiedenen Betriebssystemen durch Thread Mapping, Planungsmechanismus und Synchronisationssperrmechanismus.

Was bedeutet 'Plattformunabhängigkeit' im Kontext von Java?Was bedeutet 'Plattformunabhängigkeit' im Kontext von Java?Apr 23, 2025 am 12:05 AM

Die Unabhängigkeit von Java's Platform bedeutet, dass der geschriebene Code auf jeder Plattform mit JVM ohne Änderung ausgeführt wird. 1) Java -Quellcode wird in Bytecode, 2) Bytecode kompiliert und von der JVM, 3) interpretiert und ausgeführt, 3) Die JVM bietet Speicherverwaltung und Müllsammlungsfunktionen, um sicherzustellen, dass das Programm auf verschiedenen Betriebssystemen ausgeführt wird.

Können Java-Anwendungen weiterhin plattformspezifische Fehler oder Probleme stoßen?Können Java-Anwendungen weiterhin plattformspezifische Fehler oder Probleme stoßen?Apr 23, 2025 am 12:03 AM

JavaapplicationscanindeNecounterplatform-spezifische SpezifikationsDespitethejvm'Sabstraction.Reassinclude: 1) NativeCodeandlibraries, 2) Operatingsystemdifferenzen, 3) jvmimplementationVarias und 4) Hardwaredependenz

Wie wirkt sich Cloud Computing auf die Bedeutung der Unabhängigkeit der Plattform der Java aus?Wie wirkt sich Cloud Computing auf die Bedeutung der Unabhängigkeit der Plattform der Java aus?Apr 22, 2025 pm 07:05 PM

Cloud Computing verbessert die Unabhängigkeit der Java -Plattform erheblich. 1) Der Java-Code wird in Bytecode zusammengestellt und von der JVM auf verschiedenen Betriebssystemen ausgeführt, um einen plattformübergreifenden Betrieb sicherzustellen. 2) Verwenden Sie Docker und Kubernetes, um Java -Anwendungen bereitzustellen, um die Portabilität und Skalierbarkeit zu verbessern.

Welche Rolle hat die Unabhängigkeit von Java in ihrer weit verbreiteten Akzeptanz gespielt?Welche Rolle hat die Unabhängigkeit von Java in ihrer weit verbreiteten Akzeptanz gespielt?Apr 22, 2025 pm 06:53 PM

Java'SplatformIndependenceAllowsDeveloToWriteCodeonceAnDrunitonanyDeviceOroswithajvm.Thissisached ThroughCompilingTobyteCode, die thejvMinterpretSorcompilesatruntime.thisfeaturehasseboostedjavaSadoToToToToToToToToToToToToToDoToToToToTionDe-Signifikant-

Wie beeinflussen Containerisierungstechnologien (wie Docker) die Bedeutung der Unabhängigkeit der Plattform der Java?Wie beeinflussen Containerisierungstechnologien (wie Docker) die Bedeutung der Unabhängigkeit der Plattform der Java?Apr 22, 2025 pm 06:49 PM

Containerisierungstechnologien wie Docker verbessern anstatt die Unabhängigkeit der Plattform der Java zu ersetzen. 1) Gewährleistung der Konsistenz zwischen Umgebungen, 2) Verwalten von Abhängigkeiten, einschließlich spezifischer JVM -Versionen, 3) Vereinfachen Sie den Bereitstellungsprozess, um JAVA -Anwendungen anpassungsfähiger und überschaubarer zu gestalten.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

SublimeText3 Linux neue Version

SublimeText3 Linux neue Version

SublimeText3 Linux neueste Version

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software