回覆列表
  • 1 # java架構設計

    Java虛擬機器統計監控工具jstat(Java Virtual Machine statistics monitoring tool)。

    首先,我們得明確一下jstat的作用:對JVM進行統計監控,並且是實時的。那麼監控java虛擬機器的哪些資料呢?

    我們先看看jstat是如何使用的,linux下執行:

    jstat -helpjstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

    再看看有哪些options:

    jstat -options

    舉例說明之(其他引數大家可以自己實際練習看看都輸出哪些資料):

    jstat -gc -t -h10 27691 2000 10

    看這一大堆數字,煩不煩?惡不噁心?有看下去的心情嗎?透過這些資料來快速分析記憶體洩漏問題能快速起來嗎?

    上面是對jstat的一個的基本介紹,大家應該可以看出來,想透過jstat去監控記憶體健康狀態是沒問題的,但是也得清楚的瞭解JVM的相關知識,要搞清楚年輕代、永久代、YGC、FGC,並根據這些資料來判斷是否有記憶體洩漏的問題或者風險。

    這裡,我建議的方法是:

    如果你覺得你的應用有記憶體洩漏的問題,那麼千萬別重啟或者停止應用,要保留第一現場(這是第一步,第一步沒有了就等下一次記憶體洩漏吧~可以考慮透過slb把這臺機器摘掉,避免影響使用者)

    用java自帶的工具jmap dump現場檔案: jmap -dump:format=b,file=heap.bin <pid>

    用MAT工具分析heap dump檔案,現場檔案拿到手了,剩下的就是學會使用MAT分析檔案了,其實也不用你分析,需要做的事情MAT都幫你做好了,透過MAT即可分析出吃記憶體的物件是什麼了,這樣就可以定位到記憶體洩漏的問題了。

  • 中秋節和大豐收的關聯?
  • 重力到底是什麼?