Java的jmap命令的具體使用
jmap命令簡介
jmap(Java Virtual Machine Memory Map)是JDK提供的一個可以生成Java虛擬機的堆轉(zhuǎn)儲快照dump文件的命令行工具。除此以外,jmap命令還可以查看finalize執(zhí)行隊列、Java堆和方法區(qū)的詳細信息,比如空間使用率、當前使用的什么垃圾回收器、分代情況等等。
和jinfo命令一樣,在Windows系統(tǒng)上使用還是有一些限制的。在沒有dbgeng.dll的Windows系統(tǒng)中,必須安裝用于Windows的調(diào)試工具才能使jinfo命令正常工作,PATH環(huán)境變量應(yīng)該包含jvm.dll的位置。
jmap命令參數(shù)
命令語法:
jmap [options] pid
命令參數(shù)說明:
option:jmap命令的可選參數(shù)。如果沒有指定這個參數(shù),jinfo命令會顯示Java虛擬機進程的內(nèi)存映像信息,如下圖:

pid:要打印配置信息的Java虛擬機的進程ID。
想要要獲取運行的Java虛擬機進程的列表,可以使用ps命令(Linux系統(tǒng)中)或tasklist命令(Windows系統(tǒng)中),如果Java虛擬機進程沒有在單獨的docker實例中運行,可以使用jps命令。
option都有哪些參數(shù)呢?我們來看一下。
-heap
顯示Java堆的如下信息:
- 被指定的垃圾回收算法的信息,包括垃圾回收算法的名稱和垃圾回收算法的詳細信息。
- 堆的配置信息,可能是由命令行選項指定,或者由Java虛擬機根據(jù)服務(wù)器配置選擇的。
- 堆的內(nèi)存空間使用信息,包括分代情況,每個代的總?cè)萘?、已使用?nèi)存、可使用內(nèi)存。如果某一代被繼續(xù)細分(例如,年輕代),則包含細分的空間的內(nèi)存使用信息。
比如:

-histo[:live]
顯示Java堆中對象的統(tǒng)計信息,包括:對象數(shù)量、占用內(nèi)存大小(單位:字節(jié))和類的完全限定名。比如:

要獲得某個對象的大小,可以將其總大小除以該對象類型的數(shù)量。如果指定了live參數(shù),則只計算活動的對象。比如:

-clstats
顯示Java堆中元空間的類加載器的統(tǒng)計信息,包括:
class_loader:當Java虛擬機運行時,類加載器對象的地址
classes:已加載類的數(shù)量
bytes:該類加載器加載的所有類的元數(shù)據(jù)所占的字節(jié)數(shù)
parent_loader:父類加載器對象的地址,如果沒有顯示null。
alive:是否存活的標識,表示類加載器對象是否將被垃圾回收。
type:該類加載器的類名。
比如:

-finalizerinfo
顯示在F-Queue中等待Finalizer線程執(zhí)行finalize方法的對象。比如:

-dump:[live,]format=b,file=
生成Java虛擬機的堆轉(zhuǎn)儲快照dump文件。具體說明如下:
live參數(shù)是可選的,如果指定,則只轉(zhuǎn)儲堆中的活動對象;如果沒有指定,則轉(zhuǎn)儲堆中的所有對象。format=b表示以hprof二進制格式轉(zhuǎn)儲Java堆的內(nèi)存。file=<filename>用于指定快照dump文件的文件名。
比如:

-F
強制模式。如果指定的pid沒有響應(yīng),可以配合-dump或-histo一起使用。此模式下,不支持live參數(shù)。比如:

-h 和 -help
顯示jinfo命令的幫助信息。
到此這篇關(guān)于Java的jmap命令的具體使用的文章就介紹到這了,更多相關(guān)Java jmap命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java通過snmp協(xié)議獲取物理設(shè)備信息
這篇文章主要介紹了java通過snmp協(xié)議獲取物理設(shè)備信息,snmp中文含義是簡單網(wǎng)絡(luò)管理協(xié)議,可用完成對計算機、路由器和其他網(wǎng)絡(luò)設(shè)備的遠程管理和監(jiān)視,本文我們是通過java程序來獲取,需要的朋友可以參考下2023-07-07
Java調(diào)用微信客服消息實現(xiàn)發(fā)貨通知的方法詳解
這篇文章主要介紹了Java調(diào)用微信客服消息實現(xiàn)發(fā)貨通知的方法,結(jié)合實例形式詳細分析了java針對微信接口調(diào)用的原理、調(diào)用方法與相關(guān)注意事項,需要的朋友可以參考下2017-08-08
Java對MySQL數(shù)據(jù)庫進行連接、查詢和修改操作方法
這篇文章主要介紹了Java對MySQL數(shù)據(jù)庫進行連接、查詢和修改操作方法,需要的朋友可以參考下2017-07-07
Java8深入學(xué)習(xí)系列(三)你可能忽略了的新特性
一提到Java 8就只能聽到lambda,但這不過是其中的一個而已,Java 8還有許多新的特性,有一些功能強大的新類或者新的用法,還有一些功能則是早就應(yīng)該加到Java里了,所以下面這篇文章主要給大家介紹了關(guān)于Java8中大家可能忽略了的一些新特性,需要的朋友可以參考下。2017-08-08

