溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java的jstack命令如何使用

發(fā)布時間:2022-03-22 09:01:59 來源:億速云 閱讀:243 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“Java的jstack命令如何使用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習“Java的jstack命令如何使用”吧!

jstack命令簡介

jstack(Java Virtual Machine Stack Trace)是JDK提供的一個可以生成Java虛擬機當前時刻的線程快照信息的命令行工具。線程快照一般被稱為threaddump或者javacore文件,是當前Java虛擬機中每個線程正在執(zhí)行的Java線程、虛擬機內(nèi)部線程和可選的本地方法堆棧幀的集合。對于每個方法棧幀,將會顯示完整的類名、方法名、字節(jié)碼索引(bytecode index,BCI)和行號。生成的線程快照可以用于定位線程出現(xiàn)長時間停頓的原因,比如:線程間死鎖、死循環(huán)、請求外部資源被長時間掛起等等。

jstack命令參數(shù)

命令語法:

jstack [options] pid

命令參數(shù)說明:

option:jstack命令的可選參數(shù)。如果沒有指定這個參數(shù),jstack命令會顯示Java虛擬機當前時刻的線程快照信息,如下圖:

Java的jstack命令如何使用

pid:要打印配置信息的Java虛擬機的進程ID。

想要要獲取運行的Java虛擬機進程的列表,可以使用ps命令(Linux系統(tǒng)中)或tasklist命令(Windows系統(tǒng)中),如果Java虛擬機進程沒有在單獨的docker實例中運行,可以使用jps命令。

option都有哪些參數(shù)呢?我們來看一下。

-F參數(shù)

如果Java虛擬機進程由于進程掛起而沒有任何響應(yīng),那么可以使用-F參數(shù)(僅在Oracle Solaris和Linux操作系統(tǒng)上游戲)強制顯示線程快照信息。

比如:

Java的jstack命令如何使用

-l參數(shù)

如果使用-l參數(shù),除了方法棧幀以外,jstack命令還會顯示關(guān)于鎖的附加信息,比如屬于java.util.concurrent的ownablesynchronizers列表。

比如:

Java的jstack命令如何使用

-m參數(shù)

如果使用-m參數(shù),jstack命令將顯示混合的棧幀信息,除了Java方法棧幀以外,還有本地方法棧幀。本地方法棧幀是C或C++編寫的虛擬機代碼或JNI/native代碼。

比如:

Java的jstack命令如何使用

在顯示結(jié)果中,以星號為前綴的幀是Java方法棧幀,而不以星號為前綴的是本地方法棧幀。比如:

Java的jstack命令如何使用

-h 和 -help

顯示jstack命令的幫助信息。

感謝各位的閱讀,以上就是“Java的jstack命令如何使用”的內(nèi)容了,經(jīng)過本文的學(xué)習后,相信大家對Java的jstack命令如何使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI