成为ps高手要多久

  • 发布者:t8945
  • 发布时间:2019-10-21 16:44:39
  • 用户名:
  • 密码:
  • (匿名 
  • 验证码:
  • 个回复
  • 请遵守评论服务协议,文明理性发言。网友评论仅表达个人观点,不代表本站同意其观点或证实其描述。

杨柳啊【推荐回答】: 留言于:2019-09-30 22:36:50

java程序CPU利用率高怎么办

请jstack神器来帮忙

本文介绍Linux环境下使用jstack定位问题的秘笈

工具/原料

LinuxjavathreadjstacktoppsprintfRunnable

方法/步骤

1.

一个CPU密集型线程的demo:

package chapter1;

public class FindJavaThreadInTaskManager {

public static void main(String[] args) {

Thread thread = new Thread(new Worker());

thread.start();

}

static class Worker implements Runnable {

@Override

public void run() {

while (true) {

System.out.println("Thread Name:" + Thread.currentThread().getName());

}

}

}

}

成为ps高手要多久

2.

将上述代码打成Jar。

在Linux上执行上述代码

命令:

java -jar JavaStudy.jar

成为ps高手要多久

3.

找到CPU利用率持续比较高的进程,获取进程号,此处PID为3036

命令:

top

成为ps高手要多久

4.

找到上述进程中,CPU利用率比较高的线程号TID(十进制数),此处为3046

命令:

ps p 3036 -L -o pcpu,pid,tid,time,tname,cmd

成为ps高手要多久

5.

将获取的线程号(十进制数)转换成十六进制,此处为0xb46

命令:

printf "%xn" 3046

成为ps高手要多久

6.

查看进程PID为3036中

nid为0xb46的线程信息。

命令:

jstack -l3036

成为ps高手要多久

7.

总结:

可以看到jstack命令的输出结果是相当准确的:

显示耗CPU比较高的代码与实际情况相同,都是第13行。

放心的用吧。

Enjoy youself!

成为ps高手要多久