项目需要,将gc的监视方法,和gc log的分析工具整理一下,
这些工具不会帮你确定Out Of Memory的具体位置, 但可以帮你确定系统是否发生了OOM
项目中有一个很可疑的函数,我们如下面的方法跑了一下,发现他确实存在内存泄漏(问题解决后另做总结).
问题一 让jvm输出log
打印jvm的gc log, 需要如下配置jvm启动参数:
方法1:
-Xloggc:D:/gc.log
方法2
-Xloggc:D:/gc.log -XX:+PrintGCTimeStamps -XX:-PrintGCDetails -XX:+UseConcMarkSweepGC
这些jvm启动参数的意义参考这里:
the Java application launcher
如果你手头有一份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更友好的原因等等.
很好, 链接如下:
JDK5.0垃圾收集优化之--Don't Pause
编写对GC友好,又不泄漏的代码
分享到:
相关推荐
4.2.2 jstat:虚拟机统计信息监视工具 4.2.3 jinfo:Java配置信息工具 4.2.4 jmap:Java内存映像工具 4.2.5 jhat:虚拟机堆转储快照分析工具 4.2.6 jstack:Java堆栈跟踪工具 4.2.7 HSDIS:JIT生成代码反汇编 ...
和行为应为与变量和方法相对应。自行车的状态:数度是 10mp(每小时 10 米),步度是 90rpm (每分钟 90 转),当前传动装置是第 5 个齿轮。再面向对象的程序设计中,这些数据应放在 变量中。自行车的行为:刹车,...
visualgc-可视垃圾收集监视工具 1、概要 2、描述 3、选件 4、虚拟机标识符 5、输出格式 6、例子 7、虫子 8、也可以看看 插件安装 这里使用的是jdk自带的jvisualvm安装Visual GC插件 先找到JDK安装的位置,在bin目录...
JProfiler是一个非常优秀的的JVM分析工具,可监视本地和远程的JVM,适用于各种操作系统。 常用的功能有: 1、监视堆内存占用情况和创建对象实例的数量找出内存泄露。 2、监视占用CPU较多的方法 3、监视线程的阻塞与...
-gc : 显示每个内存区的内存占用信息 -gcutil :各个内存区在堆中的使用占比 第二个参数 :vmid 如果是本地虚拟机进程 vmid和本地的虚拟机的唯一id是一致的 第三个参数 :用来指定监视的采样周期 采样间隔 单位是S ...
新版本发行: 用Go重写单个可执行文件可以监视Java 8及更高版本上的应用程序不需要现有的JDK 这个怎么运作: jvm-mon可执行文件与Java代理jar捆绑在一起启动时,它将代理提取到临时目录它附加到您要监视的JVM 将代理...
与许多其他服务器监控工具不同, psi-prob e 不需要对现有应用程序进行任何更改。它通过一个 Web 可访问的接口提供它的所有特性,只需将它部署到服务器即可。这些特征包括: Requests :在单个应用程序的基础上 , ...
创建一个用于打包独立 Java 应用程序的工具。 345:NUMA-Aware Memory Allocation for G1 针对 G1 的 NUMA-Aware 内存分配 通过实现 NUMA-aware 内存分配,提升 G1 在大型机器上的性能。 349:JFR Event ...
依托Android最新的主流平台为Android4.0,面向最新的SDK和相关工具,同时还涵盖了老版平台中的一些常用功能,以帮助开发人员适应目前市面上所有的主流设备。《Android移动应用开发(第3版)卷Ⅰ:基础篇》涵盖了作者数...