jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使用方式只支持以下的这种方式。

例如说,通过:

ps ax | grep java

找到java的进程ID

jstack  

堆栈信息:

-- ::
Full thread dump Java HotSpot(TM) -Bit Server VM (24.71-b01 mixed mode):

 tid=0x00007fbce48bb000 nid=0x330b waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

 tid=0x00007fbce528e800 nid=0x5903 waiting on condition [0x0000000118d05000]
   java.lang.Thread.State: TIMED_WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000007d7610080> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.)
    at kafka.consumer.ZookeeperConsumerConnector$ZKRebalancerListener$$anon$.run(ZookeeperConsumerConnector.scala:)

   Locked ownable synchronizers:
    - None

 tid=0x00007fbce52ea000 nid=0x5703 waiting on condition [0x0000000118c02000]
   java.lang.Thread.State: TIMED_WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000007d7600440> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:)
    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:)
    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:)
    at java.lang.Thread.run(Thread.java:)

   Locked ownable synchronizers:
    - None

 tid=0x00007fbce52e4800 nid=0x5503 waiting on condition [0x0000000118aff000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000007d7608408> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:)
    at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:)

   Locked ownable synchronizers:
    - None

 tid=0x00007fbce536e000 nid=0x5303 runnable [0x00000001189fc000]
   java.lang.Thread.State: RUNNABLE
    at sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method)
    at sun.nio.ch.KQueueArrayWrapper.poll(KQueueArrayWrapper.java:)
    at sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:)
    at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:)
    - locked <)
    - locked <0x00000007d76101e0> (a java.util.Collections$UnmodifiableSet)
    - locked <0x00000007d7610180> (a sun.nio.ch.KQueueSelectorImpl)
    at sun.nio.ch.SelectorImpl.)
    at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:)
    at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:)

   Locked ownable synchronizers:
    - None

 tid=0x00007fbce52e3800 nid=0x5207 waiting on condition [0x00000001188f9000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000007d7608500> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:)
    at org.I0Itec.zkclient.ZkEventThread.run(ZkEventThread.java:)

   Locked ownable synchronizers:
    - None

 tid=0x00007fbce5373000 nid=0x4b03 waiting on condition [0x00000001187f1000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000007d76085f0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.)
    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:)
    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:)
    at java.lang.Thread.run(Thread.java:)

   Locked ownable synchronizers:
    - None

 tid=0x00007fbce539a000 nid=0x4903 waiting on condition [0x00000001186ee000]
   java.lang.Thread.State: TIMED_WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000007d76085f0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:)
    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:)
    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:)
    at java.lang.Thread.run(Thread.java:)

   Locked ownable synchronizers:
    - None

 tid=0x00007fbce4022800 nid=0x4503 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

 tid=0x00007fbce4021800 nid=0x4303 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

 tid=0x00007fbce503b000 nid=0x4103 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

 tid=0x00007fbce5035000 nid=0x3413 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

 tid=0x00007fbce5032800 nid=0x2d03 in Object.wait() [0x0000000116146000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000007d7618ca0> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.)
    - locked <0x00000007d7618ca0> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.)
    at java.lang.)

   Locked ownable synchronizers:
    - None

 tid=0x00007fbce5031800 nid=0x2b03 in Object.wait() [0x0000000116043000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000007d76189c8> (a java.lang.ref.Reference$Lock)
    at java.lang.Object.wait(Object.java:)
    at java.lang.)
    - locked <0x00000007d76189c8> (a java.lang.ref.Reference$Lock)

   Locked ownable synchronizers:
    - None

 tid=0x00007fbce5801000 nid=0x1303 waiting on condition [0x000000010c900000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000007d760c9e8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:)
    at kafka.consumer.ConsumerIterator.makeNext(ConsumerIterator.scala:)
    at kafka.consumer.ConsumerIterator.makeNext(ConsumerIterator.scala:)
    at kafka.utils.IteratorTemplate.maybeComputeNext(IteratorTemplate.scala:)
    at kafka.utils.IteratorTemplate.hasNext(IteratorTemplate.scala:)
    at KafkaConsumer.consume(KafkaConsumer.java:)
    at KafkaConsumer.main(KafkaConsumer.java:)

   Locked ownable synchronizers:
    - None

 tid=0x00007fbce502f000 nid=0x2903 runnable 

 tid=0x00007fbce5001800 nid=0x2103 runnable 

 tid=0x00007fbce5002000 nid=0x2303 runnable 

 tid=0x00007fbce5002800 nid=0x2503 runnable 

 tid=0x00007fbce4806000 nid=0x2703 runnable 

 tid=0x00007fbce401e800 nid=0x4703 waiting on condition 

JNI 

相关说明:

1.命令格式

jstack [ option ] pid
jstack [ option ] executable core
jstack [ option ] [server-id@]remote-hostname-or-IP

2、常用参数说明

1)options:

executable Java executable from which the core dump was produced.

(可能是产生core dump的java可执行程序)

core 将被打印信息的core dump文件

remote-hostname-or-IP 远程debug服务的主机名或ip

server-id 唯一id,假如一台主机上多个远程debug服务

2)基本参数:

-F当’jstack [-l] pid’没有相应的时候强制打印栈信息

-l长列表. 打印关于锁的附加信息,例如属于java.util.concurrent的ownable synchronizers列表.

-m打印java和native c/c++框架的所有栈信息.

-h | -help打印帮助信息

pid 需要被打印配置信息的java进程id,可以用jps查询.

有篇分析的文章写得特别的好,忍不住分享了:

http://jameswxx.iteye.com/blog/1041173

jstack命令(Java Stack Trace)的更多相关文章

  1. JDK内置工具jstack(Java Stack Trace)(转)

    1.介绍 jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项"-J-d64",Windows的js ...

  2. 三、jdk工具之jstack(Java Stack Trace)

    目录 一.jdk工具之jps(JVM Process Status Tools)命令使用 二.jdk命令之javah命令(C Header and Stub File Generator) 三.jdk ...

  3. jmap命令(Java Memory Map)(转)

    JDK内置工具使用 一.javah命令(C Header and Stub File Generator) 二.jps命令(Java Virtual Machine Process Status To ...

  4. 给你的Java程序拍个片子吧:jstack命令解析

    前言 如果有一天,你的Java程序长时间停顿,也许是它病了,需要用jstack拍个片子分析分析,才能诊断具体什么病症,是死锁综合征,还是死循环等其他病症,本文我们一起来学习jstack命令~ jsta ...

  5. 十一、jdk命令之Jstatd命令(Java Statistics Monitoring Daemon)

    目录 一.jdk工具之jps(JVM Process Status Tools)命令使用 二.jdk命令之javah命令(C Header and Stub File Generator) 三.jdk ...

  6. 十一、jdk命令之Jstatd命令(Java Statistics Monitoring Daemon)远程的监控工具连接到本地的JVM执行命令

    目录 一.jdk工具之jps(JVM Process Status Tools)命令使用 二.jdk命令之javah命令(C Header and Stub File Generator) 三.jdk ...

  7. Java 抓取 thread dump (Full Thread Stack Trace) 方法汇总

    顾名思义,表示一个时间点上,显示进程里面每一个线程的 stack trace,以及线程之间关联,比如等待 常用来定位一些 不响应,CPU 很高,内存使用很高问题 汇总表格如下 工具 操作系统 Java ...

  8. Java的jstack命令使用详解

    jstack命令简介 jstack(Java Virtual Machine Stack Trace)是JDK提供的一个可以生成Java虚拟机当前时刻的线程快照信息的命令行工具.线程快照一般被称为th ...

  9. java jstack命令详解

    名称jstack: stack trace 摘要: jstack [ option ] pid jstack [ option ] executable core jstack [ option ] ...

随机推荐

  1. JavaScript input file上传前获取文件名、文件类型、文件大小等信息

    document.getElementById("productImgInput").files[0].type document.getElementById("pro ...

  2. sqlmap注入检测

    1.列出可利用数据库: sqlmap  -u  url  --dbs 2.列出某个数据库中表: sqlmap  -u  url   --tables  -D  south sqlmap  -u  ur ...

  3. l来自wentao:项目加入缓存(redis),实时调试时用 -----可视化缓存,flushdb

    下文来自segmentfault,网站:一个交流网站:https://segmentfault.com/ 在做一个项目时如果加入缓存(例如redis),我如何进行实时调试呢? 缓存 高并发 架构 gz ...

  4. mysql链接数据库时报错

    今天在命令行下链接mysql数据库报错,如下: ERROR (HY000): Can't connect to MySQL server on 'ost' (113) 这是一个什么玩意呢,怎么会报这个 ...

  5. 微信成为首批支持iPhone 6s /Plus 上 3D Touch 功能的 App

    2015苹果新品发布会上微信成为首批支持iPhone 6s 和 iPhone 6s Plus 上 3D Touch 功能的 App.通过 3D Touch,微信用户将可以通过更精减的操作完成基本任务, ...

  6. Android Activity模拟dialog

    Android项目中很多地方,都会弹出一个弹出框.类似于自己定义的alertDialog,比如微信的退出提示,但由于Dialog的限制,可能不能很完美的实现你的想要的功能,所有研究发现他们这种实现其实 ...

  7. previous_changes方法

    [27] pry(main)> c = Channel.find 6 => #<Channel id: 6, title: "会员", cid: "96 ...

  8. [OpenJudge 3063]罪犯问题

    [OpenJudge 3063]罪犯问题 试题描述 一天,警官抓获了N个嫌犯,审问N个罪犯的途中,作为警长助手的你突然发现其中被确定为罪犯的K号人是你曾经出生入死的兄弟,你不能眼睁睁看着他被抓进牢里. ...

  9. 18个网站SEO建议

    第一位专家是Autotrader公司的搜索市场经理Dewi Nawasari,她认为SEO就是优化网站,以吸引你的目标客户的过程.她的建议如下: 1.创建良好的引导链接 要把用户的使用过程尽量的简化, ...

  10. 基础知识《六》---Java集合类: Set、List、Map、Queue使用场景梳理

    本文转载自LittleHann 相关学习资料 http://files.cnblogs.com/LittleHann/java%E9%9B%86%E5%90%88%E6%8E%92%E5%BA%8F% ...