首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

jstack的使用

由于程序是正常运行的,没有任何的输出,从日志方面也看不出什么问题,所以就需要看下jvm的内部线程的执行情况,然后再进行分析查找出原因。...这个时候,就需要借助于jstack命令了,jstack的作用是将正在运行的jvm的线程情况进行快照,并且打印出来: #用法:jstack jstack 2203 线程状态 ?...实战:死锁问题 如果在生产环境发生了死锁,我们将看到的是部署的程序没有任何反应了,这个时候我们可以借助jstack进行分析,下面我们实战下查找死锁的原因。...System.out.println("Thread2 拿到了 obj1 的锁"); } } } } } 使用jstack...进行分析 jstack 3256 在输出的信息中,已经看到,发现了1个死锁,关键信息如下: "Thread-1": at TestDeadLock$Thread2.run(TestDeadLock.java

1.5K20
您找到你想要的搜索结果了吗?
是的
没有找到

JVM故障分析及性能优化实战(IV)——jstack生成的Thread Dump日志线程状态

前面文章中只分析了Thread Dump日志文件的结构,今天针对日志文件中 Java EE middleware, third party & custom application Threads 部分线程的状态进行详细的分析...目录 1 Thread Dump日志的线程信息 2 系统线程状态 (Native Thread Status) 2.1 deadlock 2.2 runnable 2.3 blocked 2.4 waiting...在Thread Dump日志中通常显示为 java.lang.Thread.State: BLOCKED (on object monitor) 。 WAITING 某一等待线程的线程状态。...线程正在无期限地等待另一个线程来执行某一个特定的操作,线程因为调用下面的方法之一而处于等待状态: 不带超时的 Object.wait 方法,日志中显示为 java.lang.Thread.State:...下一节将讲述常见的Thread Dump日志案例分析。

1.7K52

性能优化-jstack的使用

6、jstack的使用 有些时候我们需要查看下jvm中的线程执行情况,比如,发现服务器的CPU的负载突然增高了、出现了死锁、死循环等,我们该如何分析呢?...由于程序是正常运行的,没有任何的输出,从日志方面也看不出什么问题,所以就需要 看下jvm的内部线程的执行情况,然后再进行分析查找出原因。...这个时候,就需要借助于jstack命令了,jstack的作用是将正在运行的jvm的线程情况进 行快照,并且打印出来: #用法:jstack [root@node01 bin]# jstack...6.2、实战:死锁问题 如果在生产环境发生了死锁,我们将看到的是部署的程序没有任何反应了,这个时候我 们可以借助jstack进行分析,下面我们实战下查找死锁的原因。...6.2.3、使用jstack进行分析 [root@node01 ~]# jstack 3256 Full thread dump Java HotSpot(TM) 64‐Bit Server VM (25.141

2K20

jstack是如何获取threaddump的?

欢迎访问陈同学博客原文 JDK提供了许多命令行工具用于监视JVM,让我们可以了解其异常堆栈、GC日志、threaddump、heapdump等信息。一时好奇,想看看jstack是如何实现的?...jstack使用小例子 先以一个小场景简单示范下 jstack 的使用。 场景:Java应用持续占用很高CPU,需要排查一下。 模拟:造个场景简单模拟下,没什么实际意义,仅作演示。...至于如何利用jstack的数据分析线程情况,可以看看 如何使用jstack分析线程状态 和 jstack。...jstack实现原理 本部分不深入源码,浅尝即止,只是想看看工具是如何与JVM通讯以获取各项诊断数据的。更深入的源码分析,可以看看 聊聊jstack的工作原理。...等命令会与jvm进程建立socket连接,发送对应的指令(jstack发送了threaddump指令),然后再读取返回的数据。

2.2K50

Java命令学习系列(二)——Jstack

jstack是java虚拟机自带的一种堆栈跟踪工具。 功能 jstack用于生成java虚拟机当前时刻的线程快照。...另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack...线程状态 想要通过jstack命令来分析线程的情况的话,首先要知道线程都有哪些状态,下面这些状态是我们使用jstack命令查看线程堆栈信息时可能会看到的线程的几种状态: NEW,未启动的。...) jstack -F [-m] [-l] (to connect to a hung process) jstack [-m] [-l] <executable...死锁分析 学会了怎么使用jstack命令之后,我们就可以看看,如何使用jstack分析死锁了,这也是我们一定要掌握的内容。 啥叫死锁?

90220

4个java死锁工具:jstack、jconsole、jvisualvm、jmc

1、jstack 找到疑似死锁的例子,找到 PID,上图中可以看到 20148 线程是我上面执行死锁的例子: > jstack -l 20148 20148 com.yudianxx.basic.线程....ReentrantLock.ReentrantLockDeadLock jps -l ; -l 参数可以显示完整的启动类 执行 jstack -l 20148 往下找,会显示一段 deadlock...点击后可以看到线程的状态日志,可以看到死锁的信息: 4、jmc 同样位于 JDK 的 bin 目录。 打开你需要监测的进程: 下方切换到 线程 图中看到的就是死锁的标识。...以上就是定位java线程死锁的工具,推荐使用 jstack 命令,毕竟后三个工具在Linux中是没有的。 jstack 通过找到类入口,再找出当前线程正在等待哪个线程,然后再定位到死锁的行数。

52510
领券