GC调优工具篇
工具常用命令
jps
-l 显示路径
-v 显示虚拟机参数
-m 显示程序参数
jstat
-class 类加载情况
-gc [pid][循环时间间隔][循环次数] 堆各个区空间情况/各区gc次数/各区gc花费时间
jinfo jvm配置信息工具
-flags 显示进程的配置参数
-flag VM配置项 可以在jvm不关闭的情况下动态修改参数(只针对manageable的jvm参数)
jmap
-heap 打印堆快照
-histo[:live] 打印对象的内存占用情况 live 显示存活的对象
-dump:live,format=b,file=abc.bin 导出堆转储文件, 存活的对象,二进制文件,文件名abc.bin (此功能慎用,会占用磁盘空间,会导致程序卡顿)
jhat
jhat 转储文件名 会动态分析jmap转储文件,然后开启一个http服务供浏览器查看堆转储文件的分析结果
jstack
-l 输出线程信息
一些用于排查的JVM参数
-XX:+HeapDumpOnOutOfMemoryError 当产生OOM时自动生成堆转储文件(磁盘空间足够的情况建议常开)
-XX:+HeapDumpPath 堆转储文件生成路径
-XX:+PrintGC (排查完记得关闭)
-XX:+PrintGCDetails (排查完记得关闭)
-XX:+PrintGCTimeStamps (排查完记得关闭)
-XX:+PrintHeapAtGC 在GC时打印堆信息 (排查完记得关闭)
-XX:+TraceClassLoading 打印类加载信息
-XX:
阿里开源的Arthas: java诊断工具 官方文档:https://alibaba.github.io/arthas/
1.启动: java -jar arthas-boot.jar
2.选择要附着的进程号
3.进入arthas控制台
4.命令:
dashboard 输出该进程总览
q 退出
thread [-n 显示最占cpu的前n个线程 -b 阻塞的线程 -i 1000 采样时间间隔] 显示线程信息
jad 类路径 反编译类的内容(可用于查看类是否更新成最新内容)
trace 类路径 方法名 监测方法耗时
monitor -c 5 类路径 方法名 5秒钟刷新一次统计方法耗时/成功/失败等信息
watch 类路径 方法名 '{param[0],returnObj}' 监测方法的入参[0],返回值
*****其他很多命令...去官网文档找