搜尋
首頁Javajava教程如何使用Java中的jmap指令?

jmap指令簡介

jmap(Java Virtual Machine Memory Map)是JDK提供的一個可以產生Java虛擬機器的堆疊快照dump檔案的命令列工具。除此之外,jmap指令還可以查看finalize執行佇列、Java堆和方法區的詳細信息,例如空間使用率、目前使用的什麼垃圾回收器、分代情況等等。

和jinfo指令一樣,在Windows系統上使用還是有一些限制的。在沒有dbgeng.dll的Windows系統中,必須安裝用於Windows的偵錯工具才能使jinfo指令正常運作,PATH環境變數應該包含jvm.dll的位置。

jmap指令參數

指令語法:

jmap [options] pid

指令參數說明:

option:jmap指令的選用參數。如果沒有指定這個參數,jinfo指令會顯示Java虛擬機器程序的記憶體映像訊息,如下圖:

如何使用Java中的jmap指令?

pid:要列印設定資訊的Java虛擬機器的進程ID。

想要要取得執行的Java虛擬機器程序的列表,可以使用ps指令(Linux系統中)或tasklist指令(Windows系統中),如果Java虛擬機器程序沒有在單獨的docker實例中執行,可以使用jps指令。

option都有哪些參數呢?我們來看一下。

-heap

顯示Java堆的以下資訊:

  • #被指定的垃圾回收演算法的信息,包括垃圾回收演算法的名稱和垃圾回收演算法的詳細資訊。

  • 堆的設定訊息,可能是由命令列選項指定,或是由Java虛擬機器根據伺服器設定選擇的。

  • 堆的記憶體空間使用訊息,包括分代情況,每個代的總容量、已使用記憶體、可使用記憶體。如果某一代被繼續細分(例如,年輕代),則包含細分的空間的記憶體使用資訊。

例如:

如何使用Java中的jmap指令?

-histo[:live]

顯示Java堆中物件的統計訊息,包括:物件數量、佔用記憶體大小(單位:位元組)和類別的完全限定名。例如:

如何使用Java中的jmap指令?

要取得某個物件的大小,可以將其總大小除以該物件類型的數量。如果指定了live參數,則只計算活動的物件。例如:

如何使用Java中的jmap指令?

-clstats

顯示Java堆中元空間的類別載入器的統計信息,包括:

class_loader:當Java虛擬機器運行時,類別載入器物件的位址
classes:已載入類別的數量
bytes:該類別載入器載入的所有類別的元資料所佔的位元組數
parent_loader:父類別載入器物件的位址,如果沒有顯示null
alive:是否存活的標識,表示類別載入器物件是否將被垃圾回收。
type:該類別載入器的類別名稱。

例如:

如何使用Java中的jmap指令?

-finalizerinfo

顯示在F-Queue中等待Finalizer執行緒執行finalize方法的物件。例如:

如何使用Java中的jmap指令?

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

產生Java虛擬機器的堆轉儲快照dump檔。具體說明如下:

  • live參數是可選的,如果指定,則只轉儲堆中的活動物件;如果沒有指定,則轉儲堆中的所有物件。

  • format=b表示以hprof二進位格式轉儲Java堆的記憶體。

  • file=<filename></filename>用來指定快照dump檔案的檔案名稱。

例如:

如何使用Java中的jmap指令?

-F

強制模式。如果指定的pid沒有回應,可以配合-dump-histo一起使用。此模式下,不支援live參數。例如:

如何使用Java中的jmap指令?

-h 和 -help

顯示jinfo指令的幫助資訊。

以上是如何使用Java中的jmap指令?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:亿速云。如有侵權,請聯絡admin@php.cn刪除
IntelliJ IDEA是如何在不輸出日誌的情況下識別Spring Boot項目的端口號的?IntelliJ IDEA是如何在不輸出日誌的情況下識別Spring Boot項目的端口號的?Apr 19, 2025 pm 11:45 PM

在使用IntelliJIDEAUltimate版本啟動Spring...

如何優雅地獲取實體類變量名構建數據庫查詢條件?如何優雅地獲取實體類變量名構建數據庫查詢條件?Apr 19, 2025 pm 11:42 PM

在使用MyBatis-Plus或其他ORM框架進行數據庫操作時,經常需要根據實體類的屬性名構造查詢條件。如果每次都手動...

如何利用Redis緩存方案高效實現產品排行榜列表的需求?如何利用Redis緩存方案高效實現產品排行榜列表的需求?Apr 19, 2025 pm 11:36 PM

Redis緩存方案如何實現產品排行榜列表的需求?在開發過程中,我們常常需要處理排行榜的需求,例如展示一個�...

Java對像如何安全地轉換為數組?Java對像如何安全地轉換為數組?Apr 19, 2025 pm 11:33 PM

Java對象與數組的轉換:深入探討強制類型轉換的風險與正確方法很多Java初學者會遇到將一個對象轉換成數組的�...

如何將姓名轉換為數字以實現排序並保持群組中的一致性?如何將姓名轉換為數字以實現排序並保持群組中的一致性?Apr 19, 2025 pm 11:30 PM

將姓名轉換為數字以實現排序的解決方案在許多應用場景中,用戶可能需要在群組中進行排序,尤其是在一個用...

電商平台SKU和SPU數據庫設計:如何兼顧用戶自定義屬性和無屬性商品?電商平台SKU和SPU數據庫設計:如何兼顧用戶自定義屬性和無屬性商品?Apr 19, 2025 pm 11:27 PM

電商平台SKU和SPU表設計詳解本文將探討電商平台中SKU和SPU的數據庫設計問題,特別是如何處理用戶自定義銷售屬...

在Idea中如何設置SpringBoot項目默認運行配置列表以便團隊成員共享?在Idea中如何設置SpringBoot項目默認運行配置列表以便團隊成員共享?Apr 19, 2025 pm 11:24 PM

在Idea中如何設置SpringBoot項目默認運行配置列表在使用IntelliJ...

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。