Skip to content

Commit 6b1042b

Browse files
committed
update java.md
1 parent 1eb4b9f commit 6b1042b

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

docs/java.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,17 @@
66

77
在排查`Java``CPU`性能问题时(`top us`值过高),要找出`Java`进程中消耗`CPU`多的线程,并查看它的线程栈,从而找出导致性能问题的方法调用。
88

9-
PS:如何操作可以参见[@bluedavy](http://weibo.com/bluedavy)的《分布式Java应用》的【5.1.1 cpu消耗分析】一节,说得很详细:`top`命令开启线程显示模式、按`CPU`使用率排序、记下`Java`进程里`CPU`高的线程号;手动转成十六进制(可以用`printf %x 1234`);`jstack``grep`十六进制的线程`id`,找到线程栈。查问题时,会要多次这样操作,太繁琐。
9+
PS:如何操作可以参见[@bluedavy](http://weibo.com/bluedavy)的《分布式Java应用》的【5.1.1 cpu消耗分析】一节,说得很详细:
10+
11+
1. `top`命令找出有问题`Java`进程及其线程号:
12+
1. 开启线程显示模式
13+
1.`CPU`使用率排序
14+
1. 记下`Java`进程号及其`CPU`高的线程号
15+
1. 手动转成十六进制(可以用`printf %x 1234`)。
16+
1. `jstack`有问题的`Java`进程。
17+
1. `grep`十六进制的线程`id`,找到线程栈。
18+
19+
查问题时,会要多次这样操作,**太繁琐**
1020

1121
这个脚本的功能是,打印出在运行的`Java`进程中,消耗`CPU`最多的线程栈(缺省是5个线程)。
1222

0 commit comments

Comments
 (0)