溫馨提示×

溫馨提示×

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

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

Linux系統(tǒng)如何查看java線程

發(fā)布時間:2022-01-21 14:00:24 來源:億速云 閱讀:917 作者:清風 欄目:開發(fā)技術(shù)

這篇文章主要為大家展示了Linux系統(tǒng)如何查看java線程,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶大家一起來研究并學習一下“Linux系統(tǒng)如何查看java線程”這篇文章吧。

Linux環(huán)境下,當發(fā)現(xiàn)java進程占用CPU資源很高,且又要想更進一步查出哪一個java線程占用了CPU資源時,按照以下步驟進行查找:

(一):通過【 top -p12377 -H】 查看java進程的有哪些線程的運行情況;

  和通過【jstack 12377 > stack.log】生成Java線程的dump詳細信息;


    1. 先用top命令找出占用資源厲害的java進程id,如圖:# topLinux系統(tǒng)如何查看java線程

    2. 如上圖所示,java的進程id為’52554′,接下來用top命令單獨對這個進程中的所有線程作監(jiān)視:

  1. ***\*1\****top -p52554 -H# top視圖里面里面可以通過快捷鍵依次b ,x高亮顯示top的列找出需要的線程,默認CPU排序,Shift+可以左右移動高亮排序的列;


    如圖:(這時就看出來哪個java線程CPU高,哪個線程內(nèi)存用的多)Linux系統(tǒng)如何查看java線程

  2. 如上圖所示,linux下,所有的java內(nèi)部線程,其實都對應(yīng)了一個進程id,也就是說,linux上的sun jvm將java程序中的線程映射為了操作系統(tǒng)進程;我們看到,占用CPU資源最高的那個進程id是’15417′,這個進程id對應(yīng)java線程信息中的’nid’(‘n’ stands for ‘native’);

  3. (1)要想找到到底是哪段具體的代碼占用了如此多的資源,先使用jstack打出當前棧信息到一個文件里, 比如stack.log:

  4. python -c"print hex(9757)"然后記住二進制的號

  5. cat stack.log|grep 二進制的號

  6. 1***\*jstack\** \**52554\** \**>\** \**stack\**\**.\**\**log\****


    然后使用’jtgrep’腳本把這個進程號為’9757′的java線程在stack.log中抓出來:

    1jtgrep 9757 stack.log


    Linux系統(tǒng)如何查看java線程

    其中,’jtgrep’是自己隨便寫的一個shell腳本:

    1#!/bin/sh


    3nid=python -c“”print hex($1)”““


    4grep -i $nid $2


    道理很簡單,就是 把’9757′轉(zhuǎn)換成16進制后,直接grep stack.log;可以看到,被grep出的那個線程的nid=0x3c39,正好是15417的16進制表示。

Linux有哪些版本

Linux的版本有:Deepin、UbuntuKylin、Manjaro、LinuxMint、Ubuntu等版本。其中Deepin是國內(nèi)發(fā)展最好的Linux發(fā)行版之一;UbuntuKylin是基于Ubuntu的衍生發(fā)行版;Manjaro是基于Arch的Linux發(fā)行版;LinuxMint默認的Cinnamon桌面類似Windows XP簡單易用;Ubuntu則是以桌面應(yīng)用為主的Linux操作系統(tǒng)。

以上就是關(guān)于“Linux系統(tǒng)如何查看java線程”的內(nèi)容,如果該文章對您有所幫助并覺得寫得不錯,勞請分享給您的好友一起學習新知識,若想了解更多相關(guān)知識內(nèi)容,請多多關(guān)注億速云行業(yè)資訊頻道。

向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