`
bit1129
  • 浏览: 1069677 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【Java命令三】jstack

    博客分类:
  • Java
 
阅读更多

jstack是用于获得当前运行的Java程序所有的线程的运行情况(thread dump),不同于jmap用于获得memory dump

 

[hadoop@hadoop sbin]$ jstack
Usage:
    jstack [-l] <pid>
        (to connect to running process)
    jstack -F [-m] [-l] <pid>
        (to connect to a hung process)
    jstack [-m] [-l] <executable> <core>
        (to connect to a core file)
    jstack [-m] [-l] [server_id@]<remote server IP or hostname>
        (to connect to a remote debug server)

Options:
    -F  to force a thread dump. Use when jstack <pid> does not respond (process is hung)
    -m  to print both java and native frames (mixed mode)
    -l  long listing. Prints additional information about locks
    -h or -help to print this help message

 

 常用参数:-F和-l,-F用于强制dump,-l用于获取一些关于锁的详细信息

 

 样例:

如下是使用jstack -l pid > thread.dump.001获得的输出,其中Locked ownable synchronizers是-l产生的,不加-l参数则不会输出

2015-02-27 05:37:00
Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.65-b04 mixed mode):

"sparkMaster-akka.remote.default-remote-dispatcher-55" daemon prio=10 tid=0x00007ff990001800 nid=0xc03 waiting on condition [0x00007ff9ad5d2000]
   java.lang.Thread.State: TIMED_WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000fd77df70> (a akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinPool)
        at scala.concurrent.forkjoin.ForkJoinPool.idleAwaitWork(ForkJoinPool.java:2135)
        at scala.concurrent.forkjoin.ForkJoinPool.scan(ForkJoinPool.java:2067)
        at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
        at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

   Locked ownable synchronizers:
        - None

"sparkMaster-akka.actor.default-dispatcher-46" daemon prio=10 tid=0x00007ff988008000 nid=0xb2a waiting on condition [0x00007ff9adad7000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000fd77ed20> (a akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinPool)
        at scala.concurrent.forkjoin.ForkJoinPool.scan(ForkJoinPool.java:2075)
        at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
        at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

   Locked ownable synchronizers:
        - None

"Attach Listener" daemon prio=10 tid=0x00007ff9a800d800 nid=0x995 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
        - None

"qtp984535779-33" daemon prio=10 tid=0x00007ff98c078800 nid=0x833 waiting on condition [0x00007ff9ac2a3000]
   java.lang.Thread.State: TIMED_WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000fd781130> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2082)
        at org.eclipse.jetty.util.BlockingArrayQueue.poll(BlockingArrayQueue.java:342)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.idleJobPoll(QueuedThreadPool.java:526)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.access$600(QueuedThreadPool.java:44)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)

 

 

 

分享到:
评论

相关推荐

    输出java进程的jstack信息示例分享 通过线程堆栈信息分析java线程

    在示例中,通过一个bash脚本可以自动化地对多个Java进程执行jstack命令,收集输出到指定的日志文件中。脚本的主要步骤包括: 1. 获取所有名为java的进程的PID。 2. 对每个PID执行jstack命令,并将输出重定向到日志...

    抓取jstack方法及解决system用户执行jstack命令权限问题

    抓取jstack方法及解决system用户执行jstack命令权限问题, 打开cmd窗口,输入命令 jstack -l 49824&gt;&gt;C:/error01.txt 其中49824为tomcat8.0 的pid ; error01.txt 这个可以自己取名字 多输出几份jstack 文件,做比对...

    Java线程Dump分析工具jstack解析及使用场景

    jstack命令的基本格式如下: ``` jstack [-l] [-F] pid ``` 其中,`pid` 是Java进程的ID,`-l` 选项会提供更详细的线程和锁信息,而 `-F` 选项则用于在进程无响应时强制打印堆栈信息。 当Java程序出现挂起(hung)...

    Kubernetes应用java程序无法使用jmap,jstack的解决方案.docx

    在 Kubernetes 环境中,运行 Java 程序时,无法使用 jmap 和 jstack 命令进行性能分析和诊断。这种情况下,无法获取 Java 进程的 pid,导致无法使用 jmap 和 jstack 命令。 解决方案: 1. 了解 Linux 特殊进程 在 ...

    JStack和Java Thread Dumps分析

    #### 三、JStack的使用 ##### 1. 基本用法 要使用`JStack`,首先需要确定目标Java进程的PID(进程ID)。可以通过`jps`命令获取: ```bash jps -l ``` 该命令将列出所有正在运行的Java应用程序及其PID。 接着...

    java诊断与调优常用命令jmap、jstack、jstat使用实战.pdf

    本文主要介绍了四个Java命令行工具:jps、jmap、jstack和jstat,它们是Java性能分析和故障排查的基础。 1. **jps (Java Process Status)**: 用于查看运行在本地机器上的Java进程ID,这对于其他命令来说是必需的输入...

    图形界面分析threadump_jstack分析工具_包含jdk

    描述中提到的“IBM出品,用来分析jstack pid 打印的信息”,表明这个工具是IBM开发的,它的主要功能是解析`jstack`命令输出的结果。`jstack`是Java标准工具之一,它用于打印Java虚拟机(JVM)中线程的堆栈跟踪信息,...

    java虚拟机常用命令

    jstack命令用于生成Java虚拟机当前的线程快照信息,包含每一条线程的堆栈信息。它通常用于定位线程停顿的原因,比如死锁、死循环等。jstack命令的基本格式为: ``` jstack [option] jstack [option] &lt;executable&gt; ...

    Java中常用的Linux命令.docx

    3. 查看Java堆栈信息:`jstack` 命令可以查看Java堆栈信息。 4. 查看Java内存信息:`jmap` 命令可以查看Java内存信息。 5. 查看Java垃圾回收信息:`jstat` 命令可以查看Java垃圾回收信息。 掌握这些Linux命令,可以...

    MPP的jstack分析结果

    通过执行jstack命令,我们可以获取到以下关键信息: 1. **线程状态**:jstack会列出所有活动线程及其当前的状态,包括运行(RUNNABLE)、等待(WAITING)、阻塞(BLOCKED)等。这有助于我们识别哪些线程可能在消耗...

    Java性能调优命令

    6. Java命令配合特定参数可用来查看JDK的版本以及JVM启动时的初始和最大堆大小。如`java -XX:+PrintFlagsFinal -version 2&gt;&1 | grep MaxHeapSize`命令用于查看最大堆大小。 7. Java.lang.OutOfMemoryError是一种...

    JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解.docx

    例如,使用 ps、top、printf、jstack、grep 等命令来找出某个 Java 进程中最耗费 CPU 的 Java 线程并定位堆栈信息。 例如:root@ubuntu:/ ps -ef | grep mrf-center | grep -v grep root 21711 1 1 14:47 pts/3 00:...

    JAVA命令大全-JVM设置.rar

    这份“JAVA命令大全-JVM设置.rar”压缩包文件包含了关于Java命令行选项以及JVM配置的相关知识。 首先,`JAVA命令大全.doc`可能包含以下内容: 1. **Java启动命令**:`java`和`javac`是最基础的命令,分别用于执行...

    如何通过jstack命令dump线程信息

    `jstack`命令是Java开发中用于诊断线程堆栈信息的重要工具,它可以帮助开发者了解Java应用程序的线程状态,包括运行、等待、阻塞等,以及是否存在死锁等问题。当遇到性能问题或者线程卡住不前时,`jstack`能提供关键...

    JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jstat.doc

    它包含了一系列调试命令,类似于Sun Studio中的dbx工具,但专为Java应用程序设计。`jdb` 支持断点设置、变量检查等功能,是解决复杂运行时错误的强大工具。 #### 6. jstat —— Java Statistics Monitoring Tool `...

    java自带的工具Jstack截取进程中的堆栈信息

    Jstack是Java开发工具包(JDK)中自带的一个命令行工具,它用于生成Java虚拟机(JVM)当前时刻的线程快照。线程快照中包含了JVM内所有线程的堆栈跟踪信息,是进行问题定位和性能调优时不可或缺的资源。Jstack可以...

    Java代码命令大全.7z

    本资源“Java代码命令大全.7z”包含了一个名为“Java代码命令大全.doc”的文档,旨在为Java开发者提供一个全面的参考指南,涵盖了各种常用的Java命令、工具和技巧。 在Java开发过程中,掌握一些核心的命令行工具和...

    浅谈为什么java命令运行class文件出现异常共7页.p

    总的来说,解决Java命令运行class文件异常需要从编译、运行环境、代码逻辑、依赖管理和系统配置等多个角度进行检查和调试。不断积累经验,理解Java运行原理,将有助于我们更高效地定位和解决问题。

    Java2 语言命令详解

    3. **java命令**: 用于执行Java字节码文件。例如,`java HelloWorld` 运行已编译的HelloWorld类。如果需要指定类路径或主类,可以使用`-cp`或`-classpath`参数。 4. **jar命令**: Java档案工具,用于打包和管理类...

Global site tag (gtag.js) - Google Analytics