Java的jstack命令使用示例詳解
jstack命令簡(jiǎn)介
jstack(Java Virtual Machine Stack Trace)是JDK提供的一個(gè)可以生成Java虛擬機(jī)當(dāng)前時(shí)刻的線程快照信息的命令行工具。線程快照一般被稱為threaddump或者javacore文件,是當(dāng)前Java虛擬機(jī)中每個(gè)線程正在執(zhí)行的Java線程、虛擬機(jī)內(nèi)部線程和可選的本地方法堆棧幀的集合。對(duì)于每個(gè)方法棧幀,將會(huì)顯示完整的類名、方法名、字節(jié)碼索引(bytecode index,BCI)和行號(hào)。生成的線程快照可以用于定位線程出現(xiàn)長(zhǎng)時(shí)間停頓的原因,比如:線程間死鎖、死循環(huán)、請(qǐng)求外部資源被長(zhǎng)時(shí)間掛起等等。
jstack命令參數(shù)
命令語(yǔ)法:
jstack [options] pid
命令參數(shù)說明:
option
:jstack命令的可選參數(shù)。如果沒有指定這個(gè)參數(shù),jstack命令會(huì)顯示Java虛擬機(jī)當(dāng)前時(shí)刻的線程快照信息,如下圖:
pid
:要打印配置信息的Java虛擬機(jī)的進(jìn)程ID。
想要要獲取運(yùn)行的Java虛擬機(jī)進(jìn)程的列表,可以使用ps命令(Linux系統(tǒng)中)或tasklist命令(Windows系統(tǒng)中),如果Java虛擬機(jī)進(jìn)程沒有在單獨(dú)的docker實(shí)例中運(yùn)行,可以使用jps命令。
option
都有哪些參數(shù)呢?我們來看一下。
-F參數(shù)
如果Java虛擬機(jī)進(jìn)程由于進(jìn)程掛起而沒有任何響應(yīng),那么可以使用-F
參數(shù)(僅在Oracle Solaris和Linux操作系統(tǒng)上游戲)強(qiáng)制顯示線程快照信息。
比如:
-l參數(shù)
如果使用-l
參數(shù),除了方法棧幀以外,jstack命令還會(huì)顯示關(guān)于鎖的附加信息,比如屬于java.util.concurrent的ownablesynchronizers列表。
比如:
-m參數(shù)
如果使用-m
參數(shù),jstack命令將顯示混合的棧幀信息,除了Java方法棧幀以外,還有本地方法棧幀。本地方法棧幀是C或C++編寫的虛擬機(jī)代碼或JNI/native代碼。
比如:
在顯示結(jié)果中,以星號(hào)為前綴的幀是Java方法棧幀,而不以星號(hào)為前綴的是本地方法棧幀。比如:
-h 和 -help
顯示jstack命令的幫助信息。
結(jié)尾
雖然jstack命令已經(jīng)推出很久并且使用頻率比較搞,但它仍然是一個(gè)“實(shí)驗(yàn)性質(zhì)的,并且沒有技術(shù)支持的”(Experimental and Unsupported)工具,日后可能會(huì)被轉(zhuǎn)正,也有可能在某個(gè)JDK版本中無聲無息地消失。所以,且用且珍惜吧。
不過,我們還可以使用Thread.getAllStackTracesgetAll()方法,獲取Java虛擬機(jī)中所有線程的StackTraceElement
對(duì)象,進(jìn)而獲得所有線程棧幀信息。
到此這篇關(guān)于Java的jstack命令使用示例詳解的文章就介紹到這了,更多相關(guān)Java的jstack命令使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot項(xiàng)目Jar包如何瘦身部署的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot項(xiàng)目Jar包如何瘦身部署的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09淺談java.util.concurrent包中的線程池和消息隊(duì)列
這篇文章主要介紹了淺談java.util.concurrent包中的線程池和消息隊(duì)列,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Java文件處理之使用itextpdf實(shí)現(xiàn)excel轉(zhuǎn)pdf
在文件處理中,經(jīng)常有文件類型轉(zhuǎn)換的使用場(chǎng)景,本文主要介紹了如何使用poi以及itextpdf完成excel轉(zhuǎn)pdf的操作,需要的小伙伴可以參考一下2024-02-02Retrofit+Rxjava實(shí)現(xiàn)文件上傳和下載功能
這篇文章主要介紹了Retrofit+Rxjava實(shí)現(xiàn)文件上傳和下載功能,文中提到了單文件上傳和多文件上傳及相關(guān)參數(shù)的請(qǐng)求,需要的朋友參考下吧2017-11-11java使用java.util.Date獲取指定日期的年、月、日、時(shí)、分、秒
在Java中獲取當(dāng)前時(shí)間和日期是很常見的操作,也是很重要的操作,下面這篇文章主要給大家介紹了關(guān)于java使用java.util.Date獲取指定日期的年、月、日、時(shí)、分、秒的相關(guān)資料,需要的朋友可以參考下2024-01-01java實(shí)現(xiàn)人民幣大小寫轉(zhuǎn)換方法分享
本文介紹java人民幣數(shù)字大小寫轉(zhuǎn)換方法,代碼中有注釋,大家直接看代碼吧2014-01-01詳解PowerDesigner之CDM、PDM、SQL之間轉(zhuǎn)換
這篇文章主要介紹了詳解PowerDesigner之CDM、PDM、SQL之間轉(zhuǎn)換的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-10-10Java利用POI實(shí)現(xiàn)導(dǎo)入導(dǎo)出Excel表格示例代碼
最近工作中遇到一個(gè)需求,是需要導(dǎo)出數(shù)據(jù)到Excel表格里,所以寫個(gè)Demo測(cè)試一下,還是比較簡(jiǎn)單的,現(xiàn)在分享給大家,有需要的朋友們可以參考借鑒,下面來一起看看吧。2016-10-10