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 : heap dump path=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代码加载到特定目录中
jad:逆编译已加载类的源代码
使用monitor:方法进行监视
基于watch:方法的数据观测
在trace:方法内部调用路径并输出方法路径上的每个节点需要很长时间
stack:输出调用当前方法的调用路径
.
4、MAT文件分析工具
5、gc日志分析
– xx : printgcdetails-xx : printgctimestamps-xx : printgcdatestamps-xlog GC : GC.log
gc日志分析工具:
在线: http://gceasy.io
脱机: GC查看器
1、cpu占有率高时,如何排出
1) top命令定位过程
)2) top -Hp PID查看进程中每个线程的cpu使用情况。 范例:顶级惠普1893
)3)例如,在1893进程中,4519个线程的cpu使用率很高
将线程4519转换为十六进制打印% x 4519 —— 11a 7
然后使用jstack命令检查堆栈信息
sudo-uadmin jstack 1893|grep-a 20011 a 7
)3)识别代码,分析问题。