JVM分析工具链(一) - jps和jstack

来源:互联网 发布:女明星淘宝店铺大全 编辑:程序博客网 时间:2024/05/22 09:59

1 jps, (Java Virtual Machine Process Status Tool) 

-m 输出传入main方法的参数
-l 输出main类或Jar的全限名

-v 输出传入JVM的参数

jps -m -l -v

15351 org.apache.catalina.startup.Bootstrap start -Djava.util.logging.config.file=/var/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 
17630 /build/lib/selenium-server-standalone.jar -port 5558 -role node -hub http://localhost:4444/grid/console


2 jstack, jstack主要用来查看某个Java进程内的线程堆栈信息。

-l long listings,会打印出额外的锁信息,在发生死锁时可以用jstack -l pid来观察锁持有情况
-m mixed mode,不仅会输出Java堆栈信息,还会输出C/C++堆栈信息(比如Native方法)

jstack -l 15351


"VM Thread" os_prio=0 tid=0x00000000110c5000 nid=0x44fb runnable
"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x0000000010fa8000 nid=0x44e8 runnable
"GC task thread#1 (ParallelGC)" os_prio=0 tid=0x0000000010faa000 nid=0x44e9 runnable
"GC task thread#2 (ParallelGC)" os_prio=0 tid=0x0000000010fab800 nid=0x44ea runnable
"GC task thread#3 (ParallelGC)" os_prio=0 tid=0x0000000010fad800 nid=0x44eb runnable
"VM Periodic Task Thread" os_prio=0 tid=0x000000001115e800 nid=0x4516 waiting on condition

JNI global references: 275


实例:

找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息。

ps -ef | grep "your_application"

root     12989     1  1 18:57 pts/1    15:22:40 java -jar abc.jar

得到进程号12989.

top -Hp 12989

有一列TIME字段,可以得出哪个线程消耗了多长时间。

12995 root 20 ...

第一列就是线程号

printf "%x\n" 12995

32c3

jstack 12989 | grep 32c3


原文:http://blog.csdn.net/hongchangfirst/article/details/50535615

作者:hongchangfirst

hongchangfirst的主页:http://blog.csdn.net/hongchangfirst








0 0
原创粉丝点击