1. jps: 列出正在運(yùn)行的虛擬機(jī)進(jìn)程衙耕,并可以顯示虛擬機(jī)的LVMID(對(duì)于本地來(lái)說(shuō)安寺,LVMID就是操作系統(tǒng)的進(jìn)程ID弄慰,也就是PID)第美。也可以顯示虛擬機(jī)執(zhí)行的主類(lèi),如果進(jìn)程是Jar包就顯示時(shí)Jar包的路徑
命令的格式:jps [ options ] [ hostid ]
其中[ options ] 是一些選項(xiàng)陆爽,常用的選項(xiàng)如下:
jps -q 只顯示LVMID
jps -m 顯示傳遞給主函數(shù)的參數(shù)
jps -l 主類(lèi)全名什往,如果是jar則輸出Jar包路徑
jps -v 顯示虛擬機(jī)啟動(dòng)時(shí)的JVM參數(shù)
執(zhí)行的例子:
C:\Users\XXXX>jps -l
7144 C:\Users\wangshq\AppData\Local\Temp\pulBF1.tmp\PULSEI~1.JAR
17048 sun.tools.jps.Jps
30196 org.apache.catalina.startup.Bootstrap
29748 org.apache.catalina.startup.Bootstrap
這是我在我本地啟動(dòng)了兩個(gè)Tomcat,執(zhí)行jps -l 的例子
2. jstat: 用于監(jiān)視虛擬機(jī)各種運(yùn)行狀態(tài)信息的命令工具慌闭。如:類(lèi)裝載别威,內(nèi)存,垃圾收集驴剔,JIT編譯等信息省古。
例子: jstat -gc 2764 250 20
這個(gè)代表在250毫秒內(nèi)查詢一次2764的垃圾收集情況,一共查20次丧失。
3. jinfo: 用于實(shí)時(shí)的查看和調(diào)整虛擬機(jī)各項(xiàng)參數(shù)豺妓。
jinfo 可以使用 jinfo -flag來(lái)查看系統(tǒng)默認(rèn)的值,也可以使用 jinfo -flag name=value 來(lái)修改虛擬機(jī)參數(shù).
4. jmap:主要用于生產(chǎn)堆轉(zhuǎn)儲(chǔ)快照(dump文件)
其實(shí)不使用jmap命令也可以獲取dump文件,在jvm參數(shù)上加上-XX:+HeapDumpOnOutOfMemoryError參數(shù)琳拭,在出現(xiàn)OOM異常的時(shí)候可以自動(dòng)生成dump文件训堆,還可以在Linux使用kill -3命令來(lái)生成dump快照文件
jmap命令不僅能得到dump文件,還有很多功能白嘁。例如它可以查詢Java堆的詳細(xì)信息坑鱼,永久代的詳細(xì)信息,使用的是哪種收集器絮缅,空間使用率是多少等等
具體的jmap命令的選項(xiàng)如下:
- jmap -dump:live,format=b,file=<fileName>鲁沥,用來(lái)生成java堆轉(zhuǎn)儲(chǔ)快照
- jmap - finalizerinfo 顯示在F-Queue中等待的Finalizer線程執(zhí)行finalize方法的對(duì)象
- jmap - heap 顯示java堆中詳細(xì)信息,比如使用的是那種收集器耕魄,什么參數(shù)配置黍析,分代狀況等
- jmap -histo 顯示java堆中對(duì)象的統(tǒng)計(jì)信息,包括類(lèi)屎开、實(shí)例數(shù)量、合計(jì)容量
- jmap -permstat 以ClassLoader為統(tǒng)計(jì)口徑顯示永久代的內(nèi)存情況
- jmap -F 當(dāng)使用-dump沒(méi)有反應(yīng)的時(shí)候马靠,就可以使用-F來(lái)強(qiáng)制生成dump快照
5. jhat:用來(lái)分析dump快照文件奄抽,內(nèi)置了一個(gè)http服務(wù)器,可以在瀏覽器中查看甩鳄。
但目前很少有人用jhat來(lái)分析dump文件逞度,主要是因?yàn)樗姆治龉δ芎苡邢?/p>
6. jstack:java堆棧跟蹤工具,用于生成虛擬機(jī)當(dāng)前時(shí)刻的線程快照妙啃。
線程快照是當(dāng)前虛擬機(jī)內(nèi)每一條線程正在執(zhí)行的方法堆棧的集合档泽,用來(lái)分析和定位線程出現(xiàn)長(zhǎng)時(shí)間停頓,如思索揖赴,死循環(huán)馆匿,饑餓等問(wèn)題。
在Thread類(lèi)中的getAllStackTraes()方法可以獲得虛擬機(jī)中所有線程的StackTraceElement對(duì)象燥滑。我們可以使用這個(gè)方法來(lái)查看線程的堆棧情況