进程中线程使用率偏高问题排查

1. top命令查看CPU使用率高的进程

进程中线程使用率偏高问题排查_第1张图片

2. top -H -p 15931(进程PID) 查看进程下的线程

进程中线程使用率偏高问题排查_第2张图片

3. printf "%x\n" 17503(线程PID)    线程PID 10进制转16进制 0x445f

4. jstack -l 15931(JVM进程PID)  导出java进程栈信息,里面包含线程nid=0x445f和所在的类,可结合grep命令搜索

进程中线程使用率偏高问题排查_第3张图片

第二种: Arthas方式快捷明了

thread 列出所有线程信息

thread  93 查看线程详细信息

修复: 

结合代码来看run方法中有一个while(true)循环导致的,while(true)会导致线程使用率100%, 修改后加入50ms休眠时间

while(true){

       //do something

        //这里设置休眠时间,可降低使用率

        Thread.sleep(50);

你可能感兴趣的:(java,jvm,开发语言)