#挑戰30天在頭條寫日記#
Java 自帶了多個 JVM 調優工具,以下是其中一些常用的工具:
1)jps(JVM Process Status Tool):
用于顯示目前系統中所有正在運作的 Java 程序的 PID 和相關資訊。
2)jstat(JVM Statistics Monitoring Tool):
用于實時監控和輸出 JVM 的各種統計資料,如類加載情況、垃圾回收情況等。
#jstat -gcutil pid ms
#pid=4873
#ms=1000:重新整理時間間隔,機關ms
jstat -gcutil 4873 1000
jstat -gcutil pid ms 是一條 jstat 指令,用于輸出指定程序的 JVM 記憶體使用情況,并且可以設定輸出時間間隔。
其中,“-gcutil”參數表示輸出目前堆記憶體區域(Eden、Survivor、Old Gen等)的使用率和占比情況,即各個區域已使用記憶體和總容量之比。這些名額可以幫助使用者了解 JVM 的記憶體使用情況,并根據情況進行相應的調優。
- “pid”是要監控的 Java 程序的程序 ID,通過 jps 指令可以獲得目前系統中所有 Java 程序的 PID。
- “ms”是指輸出時間間隔,機關為毫秒。例如,執行 jstat -gcutil 1234 5000 指令将會每隔5秒輸出一次程序 ID 為 1234 的 Java 應用程式的堆記憶體使用率和占比情況。
該指令可以友善地監控和分析 JVM 的記憶體使用情況,同時也是 JVM 調優工作中常用的工具之一。
3)jmap(JVM Memory Map Tool):
用于生成堆記憶體快照,并提供詳細的堆記憶體資訊,如對象數量、大小、類型等。
jmap 可以幫助開發者深入分析 Java 應用程式的記憶體使用情況,定位記憶體洩漏問題和優化記憶體使用效率。常見的使用方式如下:
(1)生成記憶體快照:使用 jmap 指令生成 Java 程序的記憶體快照檔案,例如:
jmap -dump:format=b,file=heapdump.bin <pid>
其中,“-dump”參數表示生成記憶體快照,“format=b”表示生成二進制格式的快照檔案,“file=heapdump.bin”指定生成的檔案名,“<pid>”為要監控的 Java 程序的程序 ID。
(2)檢視對象統計資訊:使用 jmap 指令生成 Java 程序的對象統計資訊,例如:
jmap -histo <pid>
該指令将輸出每種對象類型的數量、占用空間大小和類全名等詳細資訊。
(3)檢視 ClassLoader 統計資訊:使用 jmap 指令生成 Java 程序的 ClassLoader 統計資訊,例如:
jmap -clstats <pid>
該指令将輸出目前 Java 程序中所有 ClassLoader 的統計資訊,包括加載類數、解除安裝類數、總共加載的類數等。
4)jstack(JVM Stack Trace Tool):
用于輸出指定程序的 Java 線程狀态、調用棧和鎖資訊等,可以幫助使用者分析線程問題。
jstack 的常見使用方式如下:
(1)輸出線程狀态:使用 jstack 指令輸出指定 Java 程序中目前所有線程的狀态,例如:
jstack <pid>
(2)輸出死鎖資訊:使用 jstack 指令輸出指定 Java 程序中的死鎖資訊,例如:
jstack -F -m <pid>
其中,“-F”參數表示強制輸出線程堆棧資訊,“-m”表示輸出所有線程的調用棧資訊。
5)jconsole(JVM Console Tool):
一個基于 GUI 的工具,可以監控 JVM 運作狀态、記憶體使用情況、線程狀态等,同時還提供了對 JVM 垃圾回收器和類加載器的配置選項。
6)jcmd(JVM Command Tool):
用于向正在運作的 Java 程序發送診斷指令,并輸出相應的診斷資訊。
jcmd 指令可以監控和管理正在運作的 Java 程序,包括線程狀态、記憶體使用情況、GC 狀态、類加載器資訊等。常見的使用方式如下:
(1)列出目前所有可用的 Java 程序:使用 jcmd 指令列出目前系統中所有正在運作的 Java 程序,例如:
jcmd
(2)輸出 Java 程序的 GC 資訊:使用 jcmd 指令輸出指定 Java 程序的 GC 相關資訊,例如:
jcmd <pid> GC.info
(3)輸出 Java 程序的線程堆棧資訊:使用 jcmd 指令輸出指定 Java 程序中所有線程的堆棧資訊,例如:
jcmd <pid> Thread.print
(4)執行 Java 程序的垃圾回收操作:使用 jcmd 指令執行指定 Java 程序的垃圾回收操作,例如:
jcmd <pid> GC.run
==================================
如果文章對你有幫助,不要忘記加個關注、點個贊!!!