jvm调优的基本步骤

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)定位代码,分析问题。 

原文地址:https://www.cnblogs.com/sunny-miss/p/12057610.html