1. 分析思路

结合Linux和JDK命令一块分析

1)先用top命令查找cpu占用最高的进程;

2)ps -ef 或者jps进一步定位进程详情(具体什么程序);

3)定位到具体的线程或者代码:

ps -mp 进程 -o THREAD,tid,time
 
-m:显示所有的线程
-p:pid进程使用cpu的时间
-o:该参数后是用户自定义格式

生产环境CPU占用过高分析

 

4)将需要的线程ID转换为16进制格式(英文小写格式);

printf "%x\n" 有问题的线程ID

5)jstack 进程ID | grep tid(16进制线程ID小写英文) -A60

jstack 5101 | grep 13ee -A60 //追踪进程5101的线程13ee的详情,并打印前60行
生产环境CPU占用过高分析

 

2. JDK自带的JVM监控和性能分析工具

1)性能监控工具

(1) jps(虚拟机进程状况工具)

(2) jinfo(Java配置信息工具)

(3) jmap(内存映像工具)

A. 作用:

生成Java应用程序的堆快照和对象的统计信息;

B. 官网
C. 相关case

映射堆快照:jmap -heap 进程ID

抓取堆内存:

  • 生成hprof文件并下载到本地
  • MAT分析插件工具

(4) jstat(统计信息监控工具)

A. 作用:

查看堆内存各部分的使用量,以及加载类的

B. 官网
C. 相关case
  • 类加载统计
  • 编译统计
  • 垃圾回收统计

 

 

相关文章:

  • 2021-12-02
  • 2021-04-30
  • 2021-10-15
  • 2021-07-05
  • 2021-06-02
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-09-30
  • 2023-02-10
  • 2021-07-17
  • 2022-02-12
  • 2021-06-24
  • 2022-12-23
相关资源
相似解决方案