本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
posted on 2008-07-20 21:38
Robin's Programming World 阅读(13573)
评论(8) 编辑 收藏 所属分类:
Java