1先来一段飙升代码
public class FindJavaThreadInTaskManager {public static void main(String[] args) {Thread thread = new Thread(new Worker());thread.start();}static class Worker implements Runnable {@Overridepublic void run() {while (true) {System.out.println("Thread Name:" + Thread.currentThread().getName());}}}
}
2 、将程序打成jar包 t1.jar
3 、放到linux服务器上运行jar包方法
java -cp t1.jar test1.FindJavaThreadInTaskManager
4、找到CPU利用率持续比较高的进程,获取进程号,此处PID为5735
top -p `pgrep -d , java` 其中pgrep是显示系统中java应用的进程号,top -p
是只显示这些进程的信息。
5、top -Hp 5735
6、将pid转成16进制
printf %x 5747 =======》1673
7、查看当前线程的堆栈信息
jstack 5735 |grep -A 200 1673
其他参考:
https://www.cnblogs.com/dongjh/p/11343685.html
https://www.cnblogs.com/E-star/p/5314535.html
https://www.jianshu.com/p/43b2ecdfe005