JDK內置監控神器
1 eclipseMAT
MAT是一款快速,功能豐富的Java堆分析儀,可以幫助你查找內存泄漏和減少內存消耗。可以對象大小並且生成報告。
2 JProfiler
JProfiler是一款Java的性能監控工具。可以查看當前應用的對象、對象引用、內存、CPU使用情況、線程、線程運行情況(阻塞、等待等),同時可以查找應用內存使用得熱點,即:哪個對象佔用的內存比較多;或者CPU熱點,即:哪兒方法佔用的較大得CPU資源。
3 jps
jps是jdk提供的一個查看當前Java進程的小工具。
4 jstack
jstack用於列印出給定的Java進程ID或core file或遠程調試服務的Java堆棧信息。
5 jinfo
jinfo可以輸出並修改運行時的java 進程的opts。用處比較簡單,用於輸出JAVA系統參數及命令行參數。
6 jmap
列印出某個java進程(pid)內存內的所有『對象』的情況(如:產生那些對象,及其數量)。
7 jstat
8 jconsole
一個javaGUI監視工具,可以以圖表化的形式顯示各種數據,並可通過遠程連接監視遠程的伺服器VM。用java寫的GUI程序,用來監控VM,並可監控遠程的VM,非常易用,而且功能非常強。命令行里打jconsole,選則進程就可以了。
9 jvisualvm
jvisualvm同jconsole都是一個基於圖形化界面的、可以查看本地及遠程的JAVA GUI監控工具,Jvisualvm同jconsole的使用方式一樣,直接在命令行打入Jvisualvm即可啟動,不過Jvisualvm相比,界面更美觀一些,數據更實時。
10 jmc
11 jha/jdb
不常用
12 dmesg
用於排查:java進程自動消失
如果發現自己的java進程悄無聲息的消失了,幾乎沒有留下任何線索,那麼dmesg一發,很有可能有你想要的。
去找關鍵字oom_killer。找到的結果類似如下:
以上表明,對應的java進程被系統的OOM Killer給幹掉了,得分為854。
解釋一下OOM killer(Out-Of-Memory killer),該機制會監控機器的內存資源消耗。當機器內存耗盡前,該機制會掃描所有的進程(按照一定規則計算,內存佔用,時間等),挑選出得分最高的進程,然後殺死,從而保護機器。剩下的,就是看看為什麼內存這麼大,觸發了OOM-Killer了。
dmesg日誌時間轉換公式:
TAG:螞蟻技術棧 |