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)
相关推荐
在示例中,通过一个bash脚本可以自动化地对多个Java进程执行jstack命令,收集输出到指定的日志文件中。脚本的主要步骤包括: 1. 获取所有名为java的进程的PID。 2. 对每个PID执行jstack命令,并将输出重定向到日志...
抓取jstack方法及解决system用户执行jstack命令权限问题, 打开cmd窗口,输入命令 jstack -l 49824>>C:/error01.txt 其中49824为tomcat8.0 的pid ; error01.txt 这个可以自己取名字 多输出几份jstack 文件,做比对...
jstack命令的基本格式如下: ``` jstack [-l] [-F] pid ``` 其中,`pid` 是Java进程的ID,`-l` 选项会提供更详细的线程和锁信息,而 `-F` 选项则用于在进程无响应时强制打印堆栈信息。 当Java程序出现挂起(hung)...
在 Kubernetes 环境中,运行 Java 程序时,无法使用 jmap 和 jstack 命令进行性能分析和诊断。这种情况下,无法获取 Java 进程的 pid,导致无法使用 jmap 和 jstack 命令。 解决方案: 1. 了解 Linux 特殊进程 在 ...
#### 三、JStack的使用 ##### 1. 基本用法 要使用`JStack`,首先需要确定目标Java进程的PID(进程ID)。可以通过`jps`命令获取: ```bash jps -l ``` 该命令将列出所有正在运行的Java应用程序及其PID。 接着...
描述中提到的“IBM出品,用来分析jstack pid 打印的信息”,表明这个工具是IBM开发的,它的主要功能是解析`jstack`命令输出的结果。`jstack`是Java标准工具之一,它用于打印Java虚拟机(JVM)中线程的堆栈跟踪信息,...
本文主要介绍了四个Java命令行工具:jps、jmap、jstack和jstat,它们是Java性能分析和故障排查的基础。 1. **jps (Java Process Status)**: 用于查看运行在本地机器上的Java进程ID,这对于其他命令来说是必需的输入...
jstack命令用于生成Java虚拟机当前的线程快照信息,包含每一条线程的堆栈信息。它通常用于定位线程停顿的原因,比如死锁、死循环等。jstack命令的基本格式为: ``` jstack [option] jstack [option] <executable> ...
3. 查看Java堆栈信息:`jstack` 命令可以查看Java堆栈信息。 4. 查看Java内存信息:`jmap` 命令可以查看Java内存信息。 5. 查看Java垃圾回收信息:`jstat` 命令可以查看Java垃圾回收信息。 掌握这些Linux命令,可以...
通过执行jstack命令,我们可以获取到以下关键信息: 1. **线程状态**:jstack会列出所有活动线程及其当前的状态,包括运行(RUNNABLE)、等待(WAITING)、阻塞(BLOCKED)等。这有助于我们识别哪些线程可能在消耗...
6. Java命令配合特定参数可用来查看JDK的版本以及JVM启动时的初始和最大堆大小。如`java -XX:+PrintFlagsFinal -version 2>&1 | grep MaxHeapSize`命令用于查看最大堆大小。 7. Java.lang.OutOfMemoryError是一种...
例如,使用 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配置的相关知识。 首先,`JAVA命令大全.doc`可能包含以下内容: 1. **Java启动命令**:`java`和`javac`是最基础的命令,分别用于执行...
`jstack`命令是Java开发中用于诊断线程堆栈信息的重要工具,它可以帮助开发者了解Java应用程序的线程状态,包括运行、等待、阻塞等,以及是否存在死锁等问题。当遇到性能问题或者线程卡住不前时,`jstack`能提供关键...
它包含了一系列调试命令,类似于Sun Studio中的dbx工具,但专为Java应用程序设计。`jdb` 支持断点设置、变量检查等功能,是解决复杂运行时错误的强大工具。 #### 6. jstat —— Java Statistics Monitoring Tool `...
Jstack是Java开发工具包(JDK)中自带的一个命令行工具,它用于生成Java虚拟机(JVM)当前时刻的线程快照。线程快照中包含了JVM内所有线程的堆栈跟踪信息,是进行问题定位和性能调优时不可或缺的资源。Jstack可以...
本资源“Java代码命令大全.7z”包含了一个名为“Java代码命令大全.doc”的文档,旨在为Java开发者提供一个全面的参考指南,涵盖了各种常用的Java命令、工具和技巧。 在Java开发过程中,掌握一些核心的命令行工具和...
总的来说,解决Java命令运行class文件异常需要从编译、运行环境、代码逻辑、依赖管理和系统配置等多个角度进行检查和调试。不断积累经验,理解Java运行原理,将有助于我们更高效地定位和解决问题。
3. **java命令**: 用于执行Java字节码文件。例如,`java HelloWorld` 运行已编译的HelloWorld类。如果需要指定类路径或主类,可以使用`-cp`或`-classpath`参数。 4. **jar命令**: Java档案工具,用于打包和管理类...