jstack查看線程狀態(tài) linux怎么安裝jstack工具?
linux怎么安裝jstack工具?Jstack用于打印給定Java進(jìn)程ID或核心文件或遠(yuǎn)程調(diào)試服務(wù)的Java堆棧信息。如果您在64位機(jī)器上,需要指定選項(xiàng)“-j-d64”,windows jstack
linux怎么安裝jstack工具?
Jstack用于打印給定Java進(jìn)程ID或核心文件或遠(yuǎn)程調(diào)試服務(wù)的Java堆棧信息。如果您在64位機(jī)器上,需要指定選項(xiàng)“-j-d64”,windows jstack只支持以下方式:jstack[-l]PID;如果Java程序崩潰生成核心文件,jstack工具可以用來獲取Java堆棧和原生的核心文件堆棧信息,這樣您就可以很容易地知道Java程序是如何崩潰的以及問題發(fā)生在哪里的。此外,jstack工具還可以附加到正在運(yùn)行的Java程序上,以查看當(dāng)時(shí)正在運(yùn)行的Java程序的Java堆棧和本機(jī)堆棧的信息。如果正在運(yùn)行的Java程序呈現(xiàn)掛起狀態(tài),jstack非常有用。不同的Java虛擬機(jī)線程轉(zhuǎn)儲創(chuàng)建方法和文件格式不同,不同的JVM版本,轉(zhuǎn)儲信息也不同。在實(shí)際操作中,轉(zhuǎn)儲信息往往不足以確認(rèn)問題。建議生成三個(gè)轉(zhuǎn)儲。如果每個(gè)轉(zhuǎn)儲指向同一個(gè)問題,我們可以確定問題的典型性。;命令格式;$jstack[option]PID;$jstack[option]executable core;$jstack[option][server ID@]遠(yuǎn)程主機(jī)名或IP;PID:Java應(yīng)用程序的進(jìn)程號,可通過JPS獲?。籩xecutable:生成core Dump Java可執(zhí)行程序;core:打印的core文件;remote host name或IP:遠(yuǎn)程調(diào)試服務(wù)器的名稱或IP;服務(wù)器ID:唯一的ID。如果一臺主機(jī)上有多個(gè)遠(yuǎn)程調(diào)試服務(wù)
Linux系統(tǒng),請按照以下步驟進(jìn)行檢查:
top-c。將顯示正在運(yùn)行的系統(tǒng)的進(jìn)程信息。輸入capital p以根據(jù)利用率對流程進(jìn)行排序。您可以看到,第一列是進(jìn)程ID,如圖所示,消耗CPU最多的進(jìn)程ID是5986:
top-HP 5986,顯示進(jìn)程的線程運(yùn)行信息列表,繼續(xù)輸入大寫p按CPU利用率排序,您可以看到第一行,進(jìn)程中消耗CPU最多的線程ID5986是6021:
接下來,讓我們看看您的應(yīng)用程序做什么。如果是Java應(yīng)用程序,要獲得更多與線程相關(guān)的信息,可以將上面的進(jìn)程ID轉(zhuǎn)換為十六進(jìn)制,因?yàn)樵诙褩V械腏av中,存儲線程的ID是十六進(jìn)制的。您可以直接命令“printf”%Xn“6021”,輸出:1785:
接下來,您可以通過線程ID(十六進(jìn)制)查看堆棧信息。有許多工具可以查看堆棧信息。這里我使用jstack命令“jstack 5986 | grep ”0x1785 “-C5--輸出如下:
通過以上步驟,您可以知道當(dāng)前系統(tǒng)中占用CPU最多的線程以及該線程在做什么,希望能夠解決這個(gè)問題。