JDK的命令行工具
jps
查看正在使用的jvm機器進程號。
java -classpath %Java_HOME%/lib/tools.jar sun.tools.jps.Jps
命令是等價的,即jps.exe只是這個命令的一層包裝。
常用命令,-l顯示正在運行的jar包或者軟件(基於jvm),-v顯示當前進程詳細的jvm參數
jps -l
jps -v
jinfo
和jps差不多,要指定pid。顯示當前jvm環境的所有配置
javap
反匯編命令,查看class字節碼指令
-c是反匯編,為了顯示方法內的指令,不帶-c只能看方法簽名,所以大部分時候都要使用-c。
-l可以查看輸出行號和本地變量表,局部變量表(指令區-》虛擬機棧-》棧幀-》局部變量表)。
-v輸出附加信息,可以查看常量的值。(-v包含-c -l)
javap -c -l className.class > javap_1.txt
導出內存
jmap(JVM Memory Map for Java)
jmap用於生成堆快照(heapdump)。
jmap -heap 7180 #查看堆內存配置:堆(年輕代老年代)和方法區(永久代) jmap -dump:file=./dumpfile.dump 14320 #直接down對內存並指定文件名1.61G jmap -dump:format=b,file=./heap.bin 14320 #以二進制形式導入到文件 jmap -dump:live,file=./jmap.hprof 14320 #只導出正在活動的對象(沒有實例的不導出) -F強制模式 jmap -histo:live 14320|grep className #顯示什么類有多少個實例,共占了多少字節 jmap -permstat 14320 #查看永久代
jstack(JVM Stack Trace for java)
jstack用於JVM當前時刻的線程快照,又稱threaddump文件,它是JVM當前每一條線程正在執行的堆棧信息的集合。
jstack -l 7180 >> stack.txt
JHAT(JVM Heap Analysis Tool)
用來分析java堆的命令,可以將堆中的對象以html的形式顯示出來,包括對象的數量,大小等等,並支持對象查詢語言。
jhat *.hprof/dump/tdump
https://docs.oracle.com/javase/6/docs/technotes/tools/share/jmap.html
JDK可視化工具
JConsole:用來內存監控、線程監控。
JVisualVM:強大的運行監控和故障處理程序,還有性能分析等功能。對性能影響小,可直接用於生產環境。