JVM 監(jiān)控工具學(xué)習(xí)筆記

JPS 可以輸出JVM中運(yùn)行的進(jìn)程狀態(tài)信息
jps [命令行參數(shù)] [服務(wù)器]
服務(wù)器如果不指定的話就是默認(rèn)當(dāng)前服務(wù)器,命令行參數(shù)有下面幾種選項(xiàng):
[-q] 不輸出類名、jar名和傳入Main方法的參數(shù)
[-m] 輸出傳入main或者jar方法的參數(shù)
[-l] 輸出main類或者jar的全限名
[-v] 輸出傳入jvm的參數(shù)


JPS -v

JSTACK 可以用來查看某個(gè)java進(jìn)程內(nèi)的線程堆棧信息,命令行參數(shù)有下面幾種選項(xiàng):
jstack [命令行參數(shù)] [PID]
jstack [命令行參數(shù)] executable core
jstack [命令行參數(shù)] [server-id@]remote-hostname-or-ip
[-l] 在發(fā)生死鎖時(shí),可以通過jstack -l pid來觀察鎖的持有情況。
[-m] 不僅輸出java堆棧信息,還可以輸出C/C++堆棧信息
示例根據(jù)找出一個(gè)某個(gè)java進(jìn)程中最耗費(fèi)CPU的線程,并定位到堆棧信息。

  1. 第一步找出JAVA進(jìn)程,可以使用上面JPS命令或者“ps -ef | grep [系統(tǒng)名] ” 找到進(jìn)程PID


    image.png
  2. 然后,使用“top -Hp PID” 命令找出當(dāng)前進(jìn)程中最耗資源的線程,可以根據(jù)圖中“TIME”列和“CPU”列判斷。


    image.png
  3. 打印該線程的十六進(jìn)制值,使用命令“printf "%x\n" 1101”


    image.png

    4.使用JSTACK命令輸出當(dāng)前堆棧信息,“jstack 1100 | grep 44d”,可以看到CPU資源消耗在main入口方法


    image.png

    JSTAT JVM統(tǒng)計(jì)監(jiān)測工具,命令行參數(shù)有下面幾種選項(xiàng):
    jstat [ generalOption | outputOptions ]

    使用命令“ jstat -gc 1100 250 4”可以輸出GC的相關(guān)信息。圖中參數(shù)1100代表當(dāng)前PID,250表示采樣時(shí)間為250ms,4代表采樣數(shù)為4. 圖中各個(gè)指標(biāo)的含義分別是:
    S0C、S1C、S0U、S1U:Survivor 0/1區(qū)容量(Capacity)和已使用量(Used)
    EC、EU:Eden區(qū)容量和使 量
    OC、OU:年 代容量和使 量
    PC、PU:永久代容量和使 量
    YGC、YGT:年輕代GC次數(shù)和GC耗時(shí)
    FGC、FGCT:Full GC次數(shù)和Full GC耗時(shí)
    GCT:GC總耗時(shí)


    jstat -gc 1100 250 4

    還有幾個(gè)工具暫時(shí)未上手使用,未完待續(xù)~
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容