以下内容是转载的,方便以后使用的时候查找:
http://testing.etao.com/node/615
http://go-on.iteye.com/blog/1673894
使用jstack定位java应用程序CPU占用高的方法
1 ps axu | grep java 得到进程号
2 top -p java进程号
3 在top界面按小写的s改变默认刷新值到0.5s
4 在 shift +h 键,按线程进行显示
5 到现在为止,基本可以看到是哪个线程占用CPU较高了
6 假如线程号为21646,转换为16进制 548e
7 jstack java进程号 | grep -A 20 java线程号16进制
-Thread name: "Worker-15"
-线程优先级: prio=10
-java线程的identifier:tid=0x09b7b400
-native线程的identifier: nid=0x12f2
-线程的状态: in Object.wait() java.lang.Thread.State: TIMED_WAITING (on object monitor)
-线程栈起始地址:[0xb30f9000]