Java进程如何定位消耗CPU的代码

简介: Java进程如何定位消耗CPU的代码

方法一:

第一步:top 命令,找到耗cpu的进程ID

第二步:查询这个进程下的各线程占cpu的情况:


ps -mp pid -o THREAD,tid,time

1

第三步:找到占用cpu比较多的线程,将tid 转成16进制为

第四步:使用jstack命令寻找该线程


jstack pid|grep -A 5 tid(16进制)

1

方法二

第一步: 获取CPU负载最高的Java进程ID(按CPU负载从高到底排)

ps aux --sort=-%cpu | grep java

第二步: 根据进程ID查询CPU负载高的线程ID(按CPU负载从高到底排) ps -mp [进程ID] -o THREAD,tid,time | sort -k 2 -r -n

第三步: #根据线程ID查询问题代码

sudo jstack [进程ID] |grep -A 5 printf "%x" [线程ID]


目录
相关文章
|
25天前
|
Linux
|
23天前
|
监控 算法 Java
【JavaEE】什么是多线程?进程和线程的区别是什么?如何使用Java实现多线程?
【JavaEE】什么是多线程?进程和线程的区别是什么?如何使用Java实现多线程?
|
1月前
|
消息中间件 设计模式 Java
Java Review - Java进程内部的消息中间件_Event Bus设计模式
Java Review - Java进程内部的消息中间件_Event Bus设计模式
39 0
|
1月前
|
Linux 调度
linux中进程与cpu核的绑定
linux中进程与cpu核的绑定
34 0
|
17天前
|
网络协议 Linux
【系统DFX】如何诊断占用过多 CPU、内存、IO 等的神秘进程?
【系统DFX】如何诊断占用过多 CPU、内存、IO 等的神秘进程?
35 0
|
23天前
|
存储 JSON 运维
【运维】Powershell 服务器系统管理信息总结(进程、线程、磁盘、内存、网络、CPU、持续运行时间、系统账户、日志事件)
【运维】Powershell 服务器系统管理信息总结(进程、线程、磁盘、内存、网络、CPU、持续运行时间、系统账户、日志事件)
24 0
|
24天前
|
Java
Java中的进程与线程
Java中的进程与线程
22 0
|
24天前
|
安全 Java API
深入了解Java进程和线程
深入了解Java进程和线程
31 1
|
1月前
|
Java 程序员 调度
JAVA 并发编程 进程、线程、协程
程序是静态的,程序运行后变为一个进程,一个进程内部可以有多个线程同时执行。进程是所有线程的集合,每一个线程是进程中的一条执行路径
|
2月前
|
Java Linux 微服务
linux中一键杀死springclud等各个java进程
linux中一键杀死springclud等各个java进程

热门文章

最新文章

相关产品

  • 云迁移中心