jmap
是 Java Development Kit (JDK) 中的一個命令行工具,用于生成堆轉儲(heap dump)或打印出堆的內存映射。這對于診斷內存泄漏、分析對象分布和垃圾回收行為等問題非常有用。
以下是使用 jmap
的一些常見選項:
生成堆轉儲(heap dump):
要生成堆轉儲,可以使用以下命令:
jmap -dump:[live,]format=b,file=<filename> <pid>
其中,<pid>
是 Java 進程的進程 ID,<filename>
是生成的堆轉儲文件的名稱。live
選項表示僅轉儲活動對象,否則轉儲整個堆。format=b
表示以二進制格式生成堆轉儲。
例如,要生成一個名為 heapdump.hprof
的堆轉儲文件,可以使用以下命令:
jmap -dump:live,format=b,file=heapdump.hprof <pid>
打印堆的內存映射:
要打印堆的內存映射,可以使用以下命令:
jmap -heap <pid>
這將顯示有關堆配置的信息,如堆大小、年輕代和老年代的大小等。
打印類的加載信息:
要打印類的加載信息,可以使用以下命令:
jmap -clstats <pid>
這將顯示有關類加載器活動的統計信息,如已加載的類數量、已卸載的類數量等。
打印類的實例統計信息:
要打印類的實例統計信息,可以使用以下命令:
jmap -histo[:live] <pid>
這將顯示堆上每個類的實例數量、字節和類名。live
選項表示僅統計活動對象。
請注意,要使用 jmap
,您需要具有 JDK 的 bin
目錄在系統路徑中。如果您使用的是 JDK 9 或更高版本,可能需要使用 jcmd
命令替代 jmap
,因為 jmap
可能已被棄用。