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虚拟机进程的内存映像信息,如下图:
pid
:要打印配置信息的Java虚拟机的进程ID。
想要要获取运行的Java虚拟机进程的列表,可以使用ps命令(Linux系统中)或tasklist命令(Windows系统中),如果Java虚拟机进程没有在单独的docker实例中运行,可以使用jps命令。
option
都有哪些参数呢?我们来看一下。
-heap
显示Java堆的如下信息:
被指定的垃圾回收算法的信息,包括垃圾回收算法的名称和垃圾回收算法的详细信息。
堆的配置信息,可能是由命令行选项指定,或者由Java虚拟机根据服务器配置选择的。
堆的内存空间使用信息,包括分代情况,每个代的总容量、已使用内存、可使用内存。如果某一代被继续细分(例如,年轻代),则包含细分的空间的内存使用信息。
比如:
-histo[:live]
显示Java堆中对象的统计信息,包括:对象数量、占用内存大小(单位:字节)和类的完全限定名。比如:
要获得某个对象的大小,可以将其总大小除以该对象类型的数量。如果指定了live
参数,则只计算活动的对象。比如:
-clstats
显示Java堆中元空间的类加载器的统计信息,包括:
class_loader:当Java虚拟机运行时,类加载器对象的地址
classes:已加载类的数量
bytes:该类加载器加载的所有类的元数据所占的字节数
parent_loader:父类加载器对象的地址,如果没有显示null
。
alive:是否存活的标识,表示类加载器对象是否将被垃圾回收。
type:该类加载器的类名。
比如:
-finalizerinfo
显示在F-Queue中等待Finalizer线程执行finalize方法的对象。比如:
-dump:[live,]format=b,file=
生成Java虚拟机的堆转储快照dump文件。具体说明如下:
live
参数是可选的,如果指定,则只转储堆中的活动对象;如果没有指定,则转储堆中的所有对象。format=b
表示以hprof二进制格式转储Java堆的内存。file=<filename></filename>
用于指定快照dump文件的文件名。
比如:
-F
强制模式。如果指定的pid没有响应,可以配合-dump
或-histo
Befehlssyntax:
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:

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. 🎜


live
angegeben ist, werden nur Live-Objekte gezählt. Zum Beispiel: 🎜🎜
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: 🎜🎜


- 🎜
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. 🎜

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!

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.

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.

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.

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.

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

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.

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

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.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

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

Heißer Artikel

Heiße Werkzeuge

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

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
Visuelle Webentwicklungstools

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