jstack,用于检测死锁

命令:jstack 进程号

用于检测线程是否存在死锁,通过打印出jvm线程栈来进行跟踪

实例:

Found one Java-level deadlock:

=============================

"Thread-1":

waiting for ownable synchronizer 0x00000007d6e6dab8, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),

which is held by "Thread-0"

"Thread-0":

waiting for ownable synchronizer 0x00000007d6e6dae8, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),

which is held by "Thread-1"

Java stack information for the threads listed above:

===================================================

"Thread-1":

at sun.misc.Unsafe.park(Native Method)

- parking to wait for  <0x00000007d6e6dab8> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)

at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)

at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834)

at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:867)

at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1197)

at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:214)

at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:290)

at com.test.jdk.DeadLockTest$2.run(DeadLockTest.java:40)

at java.lang.Thread.run(Thread.java:745)

"Thread-0":

at sun.misc.Unsafe.park(Native Method)

- parking to wait for  <0x00000007d6e6dae8> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)

at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)

at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834)

at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:867)

at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1197)

at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:214)

at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:290)

at com.test.jdk.DeadLockTest$1.run(DeadLockTest.java:21)

at java.lang.Thread.run(Thread.java:745)

Found 1 deadlock.

可以发现线程1和线程0形成了死锁。

时间: 2024-10-18 06:43:41

jstack,用于检测死锁的相关文章

使用jdk的jps、jstack工具检测代码问题,提高程序性能

?? 今天给大家分享怎样利用jdk的jps和jstack工具结合定位代码的问题,提高程序的稳定性.健壮性和性能. 在jdk的bin,目录下面有很多的工具如图: jps.jstack工具介绍: jps: 是JDK1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况. 命令格式:jps [options ] [ hostid ] [options]选项 : -q:仅输出VM标识符,不包括classname,jar

sqlserver检测死锁;杀死锁和进程;查看锁信息

http://blog.sina.com.cn/s/blog_9dcdd2020101nf4v.html sqlserver检测死锁;杀死锁和进程;查看锁信息 (2013-06-09 16:43:03)转载▼ 标签: sql 检测死锁 杀死锁和进程 查看锁信息 it 分类: mssql --检测死锁 --如果发生死锁了,我们怎么去检测具体发生死锁的是哪条SQL语句或存储过程? --这时我们可以使用以下存储过程来检测,就可以查出引起死锁的进程和SQL语句.SQL Server自带的系统存储过程sp

SHELL脚本--用于检测一个或者多个对象是文件或者目录

#!/bin/bash # # Judging the element is a file or a folder if [ $# -lt 1 ];then   echo "ERROE!! Usage: ckfile.sh ARGS1 [ARGS2...]"   exit 4 fi for i in `seq 1 $#` do if [ -f $1 ];then   echo $1 is a commom file elif [ -d $1 ];then   echo $1 is a 

Max-Min Filter 实现及用于检测图像边缘

一. 边缘检测 边缘检测通常作用于灰度图像上.边缘检测用于检测图像中的线. 边缘检测结果 ↑ 二. 最大 - 最小滤波器(Max - Min) 3*3 Max-Min Filter 算法原理 ↑ 我们知道,图像的细节属于低频信息,图像的边缘属于高频信息.我们使用一定大小的 Max-Min 滤波器作用于图像,当滤波器作用于图像细节时,输出结果往往趋向于0(黑色):而滤波器作用于图像边缘时,Max-Min 输出结果往往趋向于255(白色).所以 最大-最小滤波器 能有效地用于检测图像的边缘和轮廓.

java中在linux下利用jstack检测死锁

首先,编写一个死锁程序 1 package deadlock; 2 3 public class testJstack { 4 final static Object resource_1 = new Object(); 5 final static Object resource_2 = new Object(); 6 7 public static void main(String[] args) { 8 Thread t1 = new Thread("t1") { 9 publi

Sql Server 检测死锁的SQL语句

首先创建一个标量值函数DigLock,用来递归检测SqlServer中的每一个会话是否存在加锁循环,如果该函数最终返回1则表示检测到了加锁循环 (也就是说检测到了死锁),如果最终返回0则表示没有检测到加锁循环. 1 CREATE FUNCTION [dbo].[DigLock] 2 ( 3 @spid int, 4 @orginSpid int 5 ) 6 RETURNS bit 7 AS 8 BEGIN 9 declare @blockedSpid int=null; 10 11 select

使用SQL检测死锁

第一步:首先创建两个测试表,表goods_sort和goods 表goods_sort:创建并写入测试数据 IF EXISTS(SELECT name FROM sysobjects WHERE name='goods_sort' AND xtype='U') DROP TABLE dbo.goods_sort --创建商品分类表 CREATE TABLE dbo.goods_sort( iSortID int NOT NULL CONSTRAINT PK_iSortID PRIMARY KEY

windows下的Java程序用于检测U盘

package com.baikeyang.utils; import java.io.File;import java.util.LinkedHashMap;import java.util.Map; // U盘检测public class CheckU {          // 存放磁盘状态           private static Map<String, Boolean> map = new LinkedHashMap<String, Boolean>();    

使用 jstack 查询线程死锁错误日志

进入系统 使用 grep -n 'java.lang.Thread.State:BLOCKED' jstack.log -A5; 查询: 原文地址:https://www.cnblogs.com/aspirant/p/9670212.html