近期工作上需要監控 我用的JAVA開發的 api .
查看log ,被叫用的時候常常顯示剩餘heap memory過低.
這開啟Windows的工作管理員, 偏偏記憶體使用量和CPU都沒有飆高.
但log裡面檢查記憶體過低的告警就是一直寫.
從log看的即時性沒有那麼高, 比較無法知道當下的狀態.
我才想到應該是JVM中的 heap memory 跟工作管理員內的上的memory不是一樣的東西.
它基本上與系統上工作管理員或linux top所顯示的會有些出入, 因為系統上是整個server的, JRE自己本身所佔用的資源只是其中一部份。
這時候前輩介紹一個JDK內建的工具jConsole.
它是用來監控java程式佔用資源的工具, 可以用來監控heap memory是否有正常回收.
看thread執行完畢是否有回收, 也可以看cpu使用率等等.
在啟動JRE/JDK bin中的jconsole應用程式後,會看到下面畫面:
分為Local與Remote連線兩種。
Local: 直接選擇對應的java process連接。
Remote: 目前我僅用過ip:port的連線方式。可以自行設定該Server的port位置。
由下圖可以看到他監控的內容滿多的, CPU rate , heap memory, class, Thread.
直接看就知道內容囉.
相當實用的好物, 這邊介紹給大家.