JDK工具包
jps 虛擬機進程狀況工具
jps是虛擬機進程狀況工具,列出正在運行的虛擬機進程,使用 Windows 的任務管理器或 UNIX 的 ps 命令也可以查詢,但如果同時啟動多個進程,必須依賴 jps。jps -l 顯示類名
jps :列出Java程序進程ID和Main函數名稱
jps -q :只輸出進程ID
jps -m :輸出傳遞給Java進程(主函數)的參數 jps -l :輸出主函數的完整路徑
jps -v :顯示傳遞給Java虛擬的參數
jstat:虛擬機統計信息監視工具
監視虛擬機各種運行狀態信息,顯示本地或遠程虛擬機進程中的類加載、內存、垃圾收集、即時編譯器等運行時數據。
options:由以下值構成
-class:顯示ClassLoader的相關信息
-compiler:顯示JIT編譯的相關信息
-gc:顯示與GC相關信息
-gccapacity:顯示各個代的容量和使用情況
-gccause:顯示垃圾收集相關信息(同-gcutil),同時顯示最后一次或當前正在發生的垃圾收集的誘發原因
-gcnew:顯示新生代信息
-gcnewcapacity:顯示新生代大小和使用情況
-gcold:顯示老年代信息
-gcoldcapacity:顯示老年代大小
-gcpermcapacity:顯示永久代大小
-gcutil:顯示垃圾收集信息
jstat -gc
進程內存區域及GC詳細信息
jstat -gc pid 250 -4 (采樣間隔250ms 采樣數4)
jstat -gcutil pid 1s 5 (間隔1S 5次 百分比顯示)
jinfo
jinfo可以用來查看正在運行的Java程序的擴展參數,甚至支持修改運行過程中的部分參數
jmap
jmap用來查看堆內存使用狀況,一般結合jhat使用。
生成堆轉儲文件
jmap -dump:format=b,file=heapdump.hprof pid
Java生成堆轉儲的方式有多種:
- 使用 jmap -dump 選項可以在JVM運行時獲取 dump.
- 使用 jconsole 選項通過 HotSpotDiagnosticMXBean 從運行時獲得堆轉儲。
- 在虛擬機啟動時如果指定了
-XX:+HeapDumpOnOutOfMemoryError
選項,則拋出 OutOfMemoryError 時,會自動執行堆轉
儲。
jstack
jstack是Java虛擬機自帶的一種堆棧跟蹤工具,用于生成java虛擬機當前時刻的線程快照。
jstack -l 30108 | grep 'java.lang.Thread.State' | wc -l // 統計線程數
jstack pid 76859
第三方工具
https://gceasy.io/ 分析日志在線
Arthas 等
dashboard
當前進程的信息
查看線程thread
通過thread命令來獲取到應用進程的線程信息,thread -1會打印線程統計信息
反編譯已加載類源碼
運行期通過jad來反編譯項目代碼, 可以用來驗證代碼是否上線成功。
具體使用,可以查看 https://arthas.aliyun.com/doc/