jstack

-F:    Force a stack dump when jstack [-l] pid does not respond.
       -l:    Long listing. Prints additional information about locks such as a list of owned java.util.concurrent ownable synchronizers. See the AbstractOwnableSynchronizer class description at
              http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/AbstractOwnableSynchronizer.html
       -m:    Prints a mixed mode stack trace that has both Java and native C/C++ frames.


jstack输出文件里,值得关注的线程状态(java.lang.Thread.State)有:
     死锁, Deadlock (重点关注)
     执行中,Runnable  
     等待资源,Waiting on condition(重点关注)
     等待获取监视器,Waiting on monitor entry(重点关注)
     暂停,Suspended
     对象等待中,Object.wait() 或 TIMED_WAITING
     阻塞,Blocked(重点关注,只有synchronized这种方式的锁(monitor锁)才会让线程出现BLOCKED状态,等待ReentrantLock则不会) 
     停止,Parked(LockSupport两组方法park/parkNanos/parkUntil,使用带参数Object blocker的,jstack输出中会显示更详细的线程信息)

使用示例如下
jstack -l [pid] > /home/[pid].log
有时候jstack不能输出,可以使用kill -3,会直接输出到控制台日志中

可关注我的公众号每天更新

jstack_第1张图片

 

你可能感兴趣的:(linux下java工具使用)