本Blog所有內容不得隨意轉載,版權屬于作者所有。如需轉載請與作者聯系(
fastzch@163.com
)。
未經許可的轉載,本人保留一切法律權益。
一直以來,發現有某些人完全不尊重我的勞動成果,隨意轉載,提醒一下那些人小心哪天惹上官司。
昨天在Javaeye.com上看到一篇《十個最好的Java性能故障排除工具》(http://www.javaeye.com/news/2943)的文章,隨即對其中兩個(MAT和GCViewer)進行了試用,下面簡單的談談感受:
GCViewer的使用很簡單,首先配置JDK的參數為:
?-verbose:gc -Xloggc:gc.log
這樣,GC的相關Log就會被寫入到gc.log文件中,如果你使用Tomcat,那么此文件會寫到%TOMCAT_HOME%/bin/目錄下。
然后,你就可以用GCViewer打開這個文件了,畫面如下:
上圖中黑色部分為OOM時的圖形表現,出現了這樣的情況后,后邊對于Heap的Summary的一些信息再也不能正確的顯示了,看看Freed Memory,有1829.298M,而上圖是我為了同時試用MAT對JVM作了一些特殊設計后產生的結果,完整的設置如下:
-Xms16m -Xmx20m -verbose:gc -Xloggc:gc.log -XX:+HeapDumpOnOutOfMemoryError
大家可以看到,我將最大堆設為20M,所以上圖才會出現OOM這種狀況,當然如果你的程序設計有問題的話,即使你設堆設為最大1024M,也會出現OOM。
正是由于上面有設置-XX:+HeapDumpOnOutOfMemoryError這個參數,所以當出現OOM狀況時,在TOMCAT_HOME%/bin/目錄下才會出現java_pid3164.hprof這樣的文件,文件名中的數字會根據當前JVM所占用的PID不同而不同。
那么我們可以在MAT同打開這個文件,如下圖所示:
在工具欄中,我們可以先把各種各樣的統計結果和詳細結果。
更多的信息,可參考各自己的官方網站:
1,MAT:http://www.eclipse.org/mat/
2,GCViewer:http://www.tagtraum.com/gcviewer.html