1、jps 查看應用進程
2、jinfo -flags pid 查看曾經賦值的一些參數
3、jstat
查看類裝載信息
jstat -class PID 1000 10 查看某個java進程的類裝載信息,每1000毫秒輸出一次,共輸出10次
查看垃圾收集信息
jstat -gc PID 1000 10
4、jstack
查看線程堆棧信息
jstack PID
5、jmap
生成堆快照
jmap -heap PID
dump出堆內存相關信息
jmap -dump:format=b,file=heap.hprof PID
jvm配置一下參數會自動生成dump文件,不用手動生成。
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heap.hprof
常用分析工具:
1、jconsole
2、jvisualvm
3、arthas
arthas常用命令:
version:查看arthas版本號
help:查看命名幫助信息
cls:清空屏幕
session:查看當前會話信息
quit:退出arthas客戶端
dashboard:當前進程的實時數據面板
thread:當前JVM的線程堆棧信息
jvm:查看當前JVM的信息
sysprop:查看JVM的系統屬性
sc:查看JVM已經加載的類信息
dump:dump已經加載類的byte code到特定目錄
jad:反編譯指定已加載類的源碼
monitor:方法執行監控
watch:方法執行數據觀測
trace:方法內部調用路徑,並輸出方法路徑上的每個節點上耗時
stack:輸出當前方法被調用的調用路徑
......
4、MAT 對文件分析工具
5、gc日志分析
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:gc.log
gc日志分析工具:
在線:http://gceasy.io
離線:GCViewer
1、cpu占用率高如何排重
(1)top命令定位進程
(2)top -Hp PID 查看進程中各個線程cpu使用情況。 例:top -Hp 1893
(3)例如:在1893進程中4519線程cpu使用率較高
把4519這個線程轉為16進制 print %x 4519 ——> 11a7
接下來通過jstack命令,查看棧信息
sudo -u admin jstack 1893 | grep -A 200 11a7
(3)定位代碼,分析問題。