jstack命令使用
概述
jstack可用于导出java运用程序的线程堆栈。其基本使用语法为:
jstack [-l] pid
-l 选项用于打印锁的额外信息。
使用演示样例
以下这段代码执行之后会出现死锁现象(由于线程1持有lock1。在等待lock2。线程2持有lock2在等待lock1,造成了循环等待。形成死锁):
package com.winwill.deadlock;
/**
* @author qifuguang
* @date 15/6/4 16:45
*/
public class TestDeadLock {
private static final Object lock1 = new Object();
private static final Object lock2 = new Object();
public static void main(String[] args) {
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
synchronized (lock1) {
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
synchronized (lock2) {
System.out.println("线程1执行....");
}
}
}
});
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
synchronized (lock2) {
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
synchronized (lock1) {
System.out.println("线程2执行...");
}
}
}
});
t1.start();
t2.start();
}
}
我们执行这段代码,然后使用jstack命令导出这个程序的线程堆栈信息:
[qifuguang@Mac~]$ jstack -l 21023 > /tmp/deadlock.txt
打开导出的线程堆栈信息文件。文件末尾例如以下所看到的:
如图所看到的。导出的线程堆栈文件里明白提示发现死锁。而且指明了死锁的原因。
总结
jstack不仅可以导出线程堆栈。还能自己主动进行死锁检測,输出线程死锁原因。
jstack命令使用的更多相关文章
- jstack 命令的使用和堆栈分析
原文:https://www.cnblogs.com/kongzhongqijing/articles/3630264.html 一.介绍 jstack 是 Java 虚拟机自带的一种堆栈跟踪工具.j ...
- jstack命令的使用
文章来源:https://blog.csdn.net/wufaliang003/article/details/80414267 jstack是java虚拟机自带的一种堆栈跟踪工具. jstack用于 ...
- 【JVM】jvm至jstack命令
一.介绍 jstack是java虚拟机自带的一种堆栈跟踪工具.jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项&qu ...
- jstack 命令学习笔记
大部分内容转载自:Java命令学习系列(二)--Jstack jstack - 查看堆栈信息 jstack ( Stack Trace for java ) 命令主要作用就是为了查看堆栈信息.它可以用 ...
- jstack命令dump线程信息
jstack命令dump线程信息 D:\Java\jdk1.8.0_05\bin>jstack.exe 6540 > dump17 6540为java 线程pid: 出来的dump17文件 ...
- 给你的Java程序拍个片子吧:jstack命令解析
前言 如果有一天,你的Java程序长时间停顿,也许是它病了,需要用jstack拍个片子分析分析,才能诊断具体什么病症,是死锁综合征,还是死循环等其他病症,本文我们一起来学习jstack命令~ jsta ...
- jstack 命令使用经验总结
jstack 命令的基本使用 jstack 在命令使用上十分简洁, 其信息量与复杂度主要体如今 thread dump 内容的分析上;web # 最基本的使用sudo -u xxx jstack {v ...
- Java的jstack命令使用详解
jstack命令简介 jstack(Java Virtual Machine Stack Trace)是JDK提供的一个可以生成Java虚拟机当前时刻的线程快照信息的命令行工具.线程快照一般被称为th ...
- Linux jstack命令详解
jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息. 如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack ...
随机推荐
- Balsamiq Mockups registration code
最近使用Mockups 进行页面原型设计,发现是未注册的,于是网上查询了下注册码,居然有效,在此记录下. 有需要的朋友也可以试试. Name:Rick Dong Key:eNrzzU/O ...
- jenkins中Deploy to container Plugin插件发布配置
参数详解: 第一项(WAR/EAR files):是war包的相对路径(相对于工作区路径,即在工作区中war包的相对路径.)如我的maven执行完成之后会在工作区的target目录下生成项目.war, ...
- 文本导出到pdf文件
程序中数据导出是经常有的需求,今天学习把文本导出到pdf文件.主要是用QPrinter,QPainter TextEditToPdf::TextEditToPdf(QWidget *parent, Q ...
- MySQL- InnoDB锁机制
InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION):二是采用了行级锁.行级锁与表级锁本来就有许多不同之处,另外,事务的引入也带来了一些新问题.下面我们先介绍一点背景知识 ...
- DevExpress]ChartControl 创建Drill-Down样式的Title
关键代码: /// <summary> /// 创建Drill-Down样式的Title /// </summary> /// <param name="cha ...
- MySQL常用指令
1.win下启动MySQL 命令行下输入: mysql –h localhost –u root -p / mysql -uroot -p 2.MySql下建表 输入命令 show database ...
- RabbitMQ安装后启动出错:- unable to connect to epmd on blockstorage: timeout (timed out)
具体出错信息如下: [root@blockstorage ~]# rabbitmqctl change_password guest RABBIT_PASS Changing password for ...
- 【codevs】2776寻找代表元
题目描述 Description 广州二中苏元实验学校一共有n个社团,分别用1到n编号.广州二中苏元实验学校一共有m个人,分别用1到m编号.每个人可以参加一个或多个社团,也可以不参加任何社团.每个社团 ...
- CGI version1.1-第一章 介绍 (译)
CGI version1.1-第一章 介绍 1.简介 1.1 用途 CGI 是为 HTTP服务器 与 CGI脚本 在 响应客户端请求分配职责, 客户请求由url,方法与关于传输协议的附属信息, CGI ...
- [分 享] PHPCMS V9 更换域名,附件地址无法批更新(更换变便)问题>解决方法!!
大家应该都有在域名更换(比如说,从本地上传到空间)的情况下,用内容>附件管理>附件地址替换 功能. 基本上替换不了所有表中原来域名的地址. 现PHPCMS V9最新版本的依旧存在些问题. ...