项目需要,将gc的监视方法,和gc log的分析工具整理一下,
这些工具不会帮你确定Out Of Memory的具体位置, 但可以帮你确定系统是否发生了OOM
项目中有一个很可疑的函数,我们如下面的方法跑了一下,发现他确实存在内存泄漏(问题解决后另做总结).
问题一 让jvm输出log
打印jvm的gc log, 需要如下配置jvm启动参数:
-Xloggc:D:/gc.log
方法2
-Xloggc:D:/gc.log -XX:+PrintGCTimeStamps -XX:-PrintGCDetails -XX:+UseConcMarkSweepGC
这些jvm启动参数的意义参考这里:
如果你手头有一份chm的javadoc的话, 下面这个路径可以看到同样的一份:
Java 2 SE Documentation -> technotes -> tools -> windows -> java - the Java application launcher
当然,不同虚拟机需要加的参数可能不一致.例如网上说:
IBM:-Xverbosegc:file=filename 或 -Xverbosegclog:filename
HP :-Xverbosegc=filename
问题二 分析jvm的log
我现在用的是HPjmeter, 和HPjtune,收费的东西公司用不了, 没调查, 但目前这两个基本满足了我的需求.
网上有这么一篇blog: 用HPjmeter分析jvm的gc日志和heap dump . 里面有各种工具的下载地址.
整理如下:
HPjmeter 下载:
ftp://ftp.hp.com/pub/gsy/HPjmeter_3.0.01.jar
ftp://ftp.hp.com/pub/gsy/hpjmeter_console_3.0.01.00_windows_setup.exe
ftp://ftp.hp.com/pub/gsy/hpjmeter_console_3.0.01.00_linux_setup.sh
HPjtune 下载:ftp://ftp.hp.com/pub/gsy (支持目录方式浏览。)
这篇blog中还介绍了其他的一些gc分析工具,同时也给出了相应的下载地址, 分别是:
SAP Memory Analyzer(Eclipse插件), gcviewer, scimark2 benchmark
其中一个比较有用的链接是这里: http://www.javaperformancetuning.com/tools/
看名字便知道, 这个网站里面有关于性能调优的工具评测,tips,news等等.
其他
过程中看了江南白衣的两篇blog, 知道了原来"声明期短的,小的,immutable对象"对GC更友好的原因等等.
很好, 链接如下:
本文介绍如何配置JVM以输出GC日志,并推荐了几款实用的GC日志分析工具,如HPjmeter和HPjtune等,帮助开发者有效定位内存泄漏等问题。
953

被折叠的 条评论
为什么被折叠?



