jstack命令使用
生活随笔
收集整理的這篇文章主要介紹了
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() {@Overridepublic 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() {@Overridepublic 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不僅可以導出線程堆棧。還能自己主動進行死鎖檢測,輸出線程死鎖原因。
轉載于:https://www.cnblogs.com/zfyouxi/p/5201994.html
總結
以上是生活随笔為你收集整理的jstack命令使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 视觉SLAM十四讲第七讲
- 下一篇: ajaxsubmit php上传文件,使