jdk自带调优工具
jmap
jmap -histo 进程id 各个类型的数据占用多大的空间
jmap -heap 进程id 堆的信息
jmap -dump:format=b,file=eureka.hprof 进程id 堆的快照信息
jvisualvm可以导入文件进行可视化处理
jstack
使用jps获取运行的Java进程的id
jstack可以用来发现程序中的死锁 jstack <进程id>
top
top \
top -p <pid>
按H :展示进程对应的线程信息
执行 jstack 19663(进程id)|grep -A 10 4cd0(线程id 十六进制),得到线程堆栈信息中 4cd0 这个线程所在行的后面10行,从堆栈中可以发现导致cpu飙高的调用方法
Jinfo
jinfo -flags <进程id> 展示java属性
jinfo -sysprops <进程id> 展示系统属性
Jstat
pid使用jps发现
jstat -gc <pid> 最常用 可以评估程序内存使用以及GC压力整体情况
jstat -gccapacity <pid> 堆内存统计
jstat -gcnew <pid> 新生代垃圾回收统计
jstat -gcnewcapacity <pid> 新生代内存统计
jstat -gcold <pid> 老年代垃圾回收统计
jstat -gcoldcapacity <pid> 老年代内存统计
jstat -gcmetacapacity <pid> 元数据空间统计
jstat -gcutil <pid> 各空间使用比例
jstat -gc <pid> 1000 10 每间隔1秒执行一次命令 执行10次
空间担保机制
动态年龄判断机制