JDK性能分析与故障处理-命令行

一、命令演示
登录主机:132.46.110.21
docker ps -a | grep 'hub.ecs.com:6999/open_pro.*open-pro-apple2'
docker exec -it ID /bin/bash

jps

jinfo 1
jinfo 1 | grep 'sun.java.command' //程序参数 main方法入参
jinfo 1 | grep 'Command line' //虚拟机系统参数,全局参数

jstat -gc 1 3s 10
jstat -gcutil 1 3s 10

#简单看下后续有实例分析
登录测试环境主机:10.142.195.60
docker ps -a | grep 'test.com:6999/open_2k'
docker exec -it ID /bin/bash

jstack 1 > stack1.txt
cat stack1.txt | grep 'java.lang.Thread.State'
cat stack1.txt | grep 'java.lang.Thread.State'| wc -l
cat stack1.txt | grep 'java.lang.Thread.State'|sort| uniq
线程状态:https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.State.html
New、Runnable(Runnable/Running)、Blocked(Blocked/WAITING/TIMED_WAITING)、Dead

#需要工具分析,肉眼不可读
jmap -dump:format=b,file=dump2019.dump 1

二、实例分析
先写java实例代码
a.建大对象,定时睡眠,置空[内存的回收],循环计算浮点数[高cpu]
b.存储溢出的异常栈和堆(练习2加sleep)

1.展示下visualVM
2.再次展示jps、jstat
3.分析stack
4.分析dump

猜你喜欢

转载自www.cnblogs.com/DeskZero/p/11563038.html