死锁的Dump文件
死锁的Dump文件
package com.stono.thread;
public class DeadLockDemo {
private static String A = "A";
private static String B = "B";
public static void main(String[] args) {
new DeadLockDemo().deadLock();
}
private void deadLock() {
Thread t1 = new Thread(new Runnable() {
public void run() {
synchronized (A) {
try {
Thread.currentThread().sleep(2000);
} catch (Exception e) {
e.printStackTrace();
}
synchronized (B) {
System.out.println("1");
}
}
}
});
Thread t2 = new Thread(new Runnable() {
public void run() {
synchronized (B) {
synchronized (A) {
System.out.println("2");
}
}
}
});
t1.start();
t2.start();
}
}
dump文件:
2017-12-24 07:49:47
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.5-b02 mixed mode): "DestroyJavaVM" #12 prio=5 os_prio=0 tid=0x00000000029de800 nid=0x17d8 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE "Thread-1" #11 prio=5 os_prio=0 tid=0x0000000018c1a000 nid=0x17a4 waiting for monitor entry [0x000000001986f000]
java.lang.Thread.State: BLOCKED (on object monitor)
at com.stono.thread.DeadLockDemo$2.run(DeadLockDemo.java:28)
- waiting to lock <0x00000000d702ba68> (a java.lang.String)
- locked <0x00000000d702ba98> (a java.lang.String)
at java.lang.Thread.run(Unknown Source) "Thread-0" #10 prio=5 os_prio=0 tid=0x0000000018c17000 nid=0xc88 waiting for monitor entry [0x000000001976f000]
java.lang.Thread.State: BLOCKED (on object monitor)
at com.stono.thread.DeadLockDemo$1.run(DeadLockDemo.java:19)
- waiting to lock <0x00000000d702ba98> (a java.lang.String)
- locked <0x00000000d702ba68> (a java.lang.String)
at java.lang.Thread.run(Unknown Source) "Service Thread" #9 daemon prio=9 os_prio=0 tid=0x0000000018bff800 nid=0x11d4 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE "C1 CompilerThread2" #8 daemon prio=9 os_prio=2 tid=0x0000000017845800 nid=0x1270 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE "C2 CompilerThread1" #7 daemon prio=9 os_prio=2 tid=0x000000001783f000 nid=0x1664 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE "C2 CompilerThread0" #6 daemon prio=9 os_prio=2 tid=0x0000000017839800 nid=0xa64 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE "Attach Listener" #5 daemon prio=5 os_prio=2 tid=0x000000001782f000 nid=0x1484 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE "Signal Dispatcher" #4 daemon prio=9 os_prio=2 tid=0x0000000018bb3800 nid=0xecc runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE "Finalizer" #3 daemon prio=8 os_prio=1 tid=0x0000000002ee0800 nid=0x1618 in Object.wait() [0x0000000018b6f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000d7090180> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x00000000d7090180> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" #2 daemon prio=10 os_prio=2 tid=0x00000000177e8000 nid=0xb9c in Object.wait() [0x0000000018a6e000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000d7088210> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Unknown Source)
at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)
- locked <0x00000000d7088210> (a java.lang.ref.Reference$Lock) "VM Thread" os_prio=2 tid=0x00000000177e6800 nid=0x1b70 runnable "GC task thread#0 (ParallelGC)" os_prio=0 tid=0x0000000002e06000 nid=0xbfc runnable "GC task thread#1 (ParallelGC)" os_prio=0 tid=0x0000000002e08000 nid=0x1898 runnable "GC task thread#2 (ParallelGC)" os_prio=0 tid=0x0000000002e09800 nid=0x1108 runnable "GC task thread#3 (ParallelGC)" os_prio=0 tid=0x0000000002e0b000 nid=0x18ac runnable "VM Periodic Task Thread" os_prio=2 tid=0x0000000018c04000 nid=0x684 waiting on condition JNI global references: 7 Found one Java-level deadlock:
=============================
"Thread-1":
waiting to lock monitor 0x0000000002edda68 (object 0x00000000d702ba68, a java.lang.String),
which is held by "Thread-0"
"Thread-0":
waiting to lock monitor 0x0000000002ee05b8 (object 0x00000000d702ba98, a java.lang.String),
which is held by "Thread-1" Java stack information for the threads listed above:
===================================================
"Thread-1":
at com.stono.thread.DeadLockDemo$2.run(DeadLockDemo.java:28)
- waiting to lock <0x00000000d702ba68> (a java.lang.String)
- locked <0x00000000d702ba98> (a java.lang.String)
at java.lang.Thread.run(Unknown Source)
"Thread-0":
at com.stono.thread.DeadLockDemo$1.run(DeadLockDemo.java:19)
- waiting to lock <0x00000000d702ba98> (a java.lang.String)
- locked <0x00000000d702ba68> (a java.lang.String)
at java.lang.Thread.run(Unknown Source) Found 1 deadlock.
死锁的Dump文件的更多相关文章
- dump文件解析之探索.Net的内存
前言: 对于需要长时间运行的.net程序,有时需要我们查看内存的使用有没有内存泄露问题. 我们可以从dump文件中找到答案. Dump的看点 用dump文件来分析内存,到底我们需要关心哪些点呢? 内存 ...
- dump解析入门-用VS解析dump文件进行排障
突然有一天部署在服务器的一个应用挂掉了,没办法只能进入服务器打开 [事件查看器]查看下,好不容易找到了打开后一脸懵逼 事件查看器查到的内容根本对我们排障没有任何作用. 在这个时候如果有对应的dump文 ...
- 【转】Windows Dump文件获取
dump文件是进程的内存镜像.可以把程序的执行状态,即当时程序内存空间数据通过调试器保存到dump文件中. 1.利用WinDbg里的adplus来获取dump文件 Adplus.vbs 是一个Visu ...
- [Java基础] 使用JMAP dump及分析dump文件
转载:http://blog.csdn.net/kevin_luan/article/details/8447896 http://liulinxia02.blog.163.com/blog/stat ...
- Windows下获取Dump文件以及进程下各线程调用栈的方法总结(转)
1. Dump文件的用途 Dump文件, 主要用于诊断一个进程的运行状态,尤其是碰到崩溃(Crash)或者挂起(hang)不响应时,需要分析它的工作状态. 除了平时常见的attach到这个进程, 分 ...
- 【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core))
问题情形 当应用在Azure 应用服务App Service中运行时,有时候出现CPU,Memory很高,但是没有明显的5XX错误和异常日志,有时就是有异常但是也不能明确的指出具体的代码错误.当面临这 ...
- 使用GDB 追踪依赖poco的so程序,core dump文件分析.
前言 在windows 下 系统核心态程序蓝屏,会产生dump文件. 用户级程序在设置后,程序崩溃也会产生dump文件.以方便开发者用windbg进行分析. so,linux 系统也有一套这样的东东- ...
- 使用MAT(Memory Analyzer Tool)工具分析dump文件--转
原文地址:http://gao-xianglong.iteye.com/blog/2173140?utm_source=tuicool&utm_medium=referral 前言 生产环境中 ...
- gdb调试常用实用命令和core dump文件的生成
1.生成core dump文件的方法: $ ulimit -c //查看是否为0 如果为0 $ ulimit -c unlimited 这样在程序崩溃以后会在当前目录生成一个core.xxx ...
随机推荐
- nfs+inotify
服务器先安装nfs服务,因为nfs服务端没有固定端口给客户端访问,所以需要借助rpc服务的111端口给客户端连接,即客户端访问rpc会调用nfs服务 yum -y install rpcbind nf ...
- How to check Open vSwitch version and supports OpenFlow version
Open vSwitch (OVS) is an open-source virtual switch, featuring programmable switch forwarding capabi ...
- C语言实现将一个整形数转换为两个字节16进制
有时候要用到这个转换,这里记录一下,例如把 int a = 164 转换储存在数组里为 uint8_t b[0]=0x00 , b[1]=0xA4 . 很简单,转换如下: b[0] = a > ...
- 洛谷—— P1260 工程规划
https://www.luogu.org/problem/show?pid=1260 题目描述 造一幢大楼是一项艰巨的工程,它是由n个子任务构成的,给它们分别编号1,2,…,n(5≤n≤1000). ...
- HDU 4329 Contest 3
果然换个编译器就过了.总的来说,不难,不过就是处理一些空格.学习了一个新的类 istringstream可以按空格划分.然后,那条式子要理解. 式子的意义是: 找到一个串,该串在query中是第几个找 ...
- xftp和xshell的使用
Xftp和Xshell配合使用部署环境. (linux系统) Xftp为可视化工具.主要用来复制文件. xshell则通过输入命令来对server进行操作,如启动服务等等. 一. Xftp的连接 新 ...
- [JZOJ NOIP2018模拟10.21]
考试之前我刚刚领略到了特判的重要性,没想到T2的两个子任务还是写挂了,丢了20分 考试的感觉不行,一路打的都是暴力,正解的思路想到一半就断了推不下去 T1:逛公园 题目链接: https://jzoj ...
- 递归进制转换_strrev
#define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <stdio.h> #include <stri ...
- 银行bank系统项目实践
想看项目的注意了!完整版银行管理系统就在这里看不看你看着办! 按照惯例咱们还是先来看一下项目需求: 某银行为了提高业务率希望开发一个银行管理系统功能如下: 1.能够完成用户开户操作 2.能够完成用户取 ...
- C#.Net版本自动更新程序及3种策略实现
C#.Net版本自动更新程序及3种策略实现 C/S程序是基于客户端和服务器的,在客户机编译新版本后将文件发布在更新服务器上,然后建立一个XML文件,该文件列举最新程序文件的版本号及最后修改日期.如程序 ...