jps (JVM process status)可以查看Java虛擬機進程執行情況,-l顯示具體的啓動類,-m顯示具體的入參。-v顯示啓動配置的jvm參數
jps -l
jstats(JVM statistic Monitoring tool):查看虛擬機上各項運行狀態信息。
查看虛擬機號爲5640的gc情況。
jstat -gc 5640
jinfo:查看和調整虛擬機的各項參數
jinfo -flag
如查看是否使用了UseSerial垃圾回收器
jinfo -flag UseSerialGC 5640
使用的減號,那麼沒用用UseSerial收集器。
jmap(JVM Memory Map For Java):生成堆內存快照,
jmap -dump:format=b,file=jmapDumpFile 3137
也可以在出現內存溢出後自動生成dump文件。
jhat(JVM Heap Analysis Tool)分析jmap生成的堆內存快照。
jhat jmapDumpFile
顯示Server is ready後在瀏覽器中輸入http://192.168.209.101:7000查看結果
一幫查詢堆內存中總容量最大的對象。
jstack:生成線程執行的棧信息,定位線程出現長時間停頓的原因
jstack -l 3137
定位線上CPU使用率過高的問題。
模擬該場景,在main函數中寫個死循環,使用top命令得到該進程id。
使用jps -l查詢得到是那個項目
如下命令得到佔用的線程
ps -mp 2050 -o THREAD,tid,time
time爲佔用的時間,tid爲線程id
-m顯示所有的線程
-p pid進程使用cpu的時間
-o 使用用戶自定義的格式。
佔用的線程爲2051,需要轉換爲16進制。
printf "%x\n" 2051
如果出現16進制數爲字母,需要轉爲小寫。
如下命令得到具體那個線程
jstack 2050 |grep 803 -A60
整體流程爲: