jstack 命令查看JAVA线程堆栈

JAVA堆栈信息

实际生产中,可能由于开发以及测试未能全面覆盖的代码质量、性能问题,而引致线程挂起甚至崩溃。可能就需要查看堆栈信息来排查问题了。

jps -lvm

jps -lvm 用于查看当前机器上运行的java进程。

C:\Users\Administrator>jps -lvm
7348  -Dosgi.requiredJavaVersion=1.8 -Dosgi.instance.area.default=@user.home/ecl
UseG1GC -XX:+UseStringDeduplication -Dosgi.requiredJavaVersion=1.8 -Xms256m -Xmx
1480 sun.tools.jps.Jps -lvm -Dapplication.home=C:\Program Files\Java\jdk1.8.0_14
6812 com.byron4j.currency.lock.ReantrentLockDemo -Dfile.encoding=UTF-8

我们看到当前计算机运行了3个java进程,进程id为6812的是我们的应用服务,我们需要查看其堆栈信息。

jstack -l pid

我们使用 jstack -l 6812 查看我们的应用堆栈信息:

C:\Users\Administrator>jstack -l 6812
2017-08-06 14:00:28
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.144-b01 mixed mode):

"Service Thread" #10 daemon prio=9 os_prio=0 tid=0x0000000018b8b000 nid=0x1658 runnable [0x000000000
0000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
        - None

"C1 CompilerThread3" #9 daemon prio=9 os_prio=2 tid=0x0000000018b04000 nid=0x1f94 waiting on conditi
on [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
        - None

......


# 应用的堆栈信息
"main" #1 prio=5 os_prio=0 tid=0x000000000263f000 nid=0xc4 waiting on condition [0x00000000027af000]

   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep(Native Method)
        at com.byron4j.currency.lock.ReantrentLockDemo.main(ReantrentLockDemo.java:19)

   Locked ownable synchronizers:
        - None

可以看到我们的应用线程当前处于等待睡眠状态: TIMED_WAITING (sleeping),并且不是通过同步字synchronized获取锁等待的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值