`

Java GC 监视方法与工具

阅读更多

项目需要,将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友好,又不泄漏的代码

分享到:
评论
2 楼 Alice南京 2015-10-09  
感谢
1 楼 wjason 2009-03-27  
如果真是内存泄漏,系统最终会抛OutOfMemory, 加这个-XX:+HeapDumpOnOutOfMemoryError (jdk1.5以上)可以得到heap dump.

可惜我的是1.4...

相关推荐

    Java虚拟机

    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生成代码反汇编 ...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    和行为应为与变量和方法相对应。自行车的状态:数度是 10mp(每小时 10 米),步度是 90rpm (每分钟 90 转),当前传动装置是第 5 个齿轮。再面向对象的程序设计中,这些数据应放在 变量中。自行车的行为:刹车,...

    Visual GC(监控垃圾回收器) 整理

    visualgc-可视垃圾收集监视工具 1、概要 2、描述 3、选件 4、虚拟机标识符 5、输出格式 6、例子 7、虫子 8、也可以看看 插件安装 这里使用的是jdk自带的jvisualvm安装Visual GC插件 先找到JDK安装的位置,在bin目录...

    JProfiler入门教程

    JProfiler是一个非常优秀的的JVM分析工具,可监视本地和远程的JVM,适用于各种操作系统。 常用的功能有: 1、监视堆内存占用情况和创建对象实例的数量找出内存泄露。 2、监视占用CPU较多的方法 3、监视线程的阻塞与...

    Java工具

    -gc : 显示每个内存区的内存占用信息 -gcutil :各个内存区在堆中的使用占比 第二个参数 :vmid 如果是本地虚拟机进程 vmid和本地的虚拟机的唯一id是一致的 第三个参数 :用来指定监视的采样周期 采样间隔 单位是S ...

    jvm-mon:基于控制台的JVM监视工具

    新版本发行: 用Go重写单个可执行文件可以监视Java 8及更高版本上的应用程序不需要现有的JDK 这个怎么运作: jvm-mon可执行文件与Java代理jar捆绑在一起启动时,它将代理提取到临时目录它附加到您要监视的JVM 将代理...

    tomcat调优监控工具-probe.rar

    与许多其他服务器监控工具不同, psi-prob e 不需要对现有应用程序进行任何更改。它通过一个 Web 可访问的接口提供它的所有特性,只需将它部署到服务器即可。这些特征包括: Requests :在单个应用程序的基础上 , ...

    jdk-14_linux-x64_bin.rpm

    创建一个用于打包独立 Java 应用程序的工具。 345:NUMA-Aware Memory Allocation for G1 针对 G1 的 NUMA-Aware 内存分配 通过实现 NUMA-aware 内存分配,提升 G1 在大型机器上的性能。 349:JFR Event ...

    Android移动应用开发(第3版)卷Ⅰ基础篇 (Shane Conder, Lauren Darcey) PDF扫描版

    依托Android最新的主流平台为Android4.0,面向最新的SDK和相关工具,同时还涵盖了老版平台中的一些常用功能,以帮助开发人员适应目前市面上所有的主流设备。《Android移动应用开发(第3版)卷Ⅰ:基础篇》涵盖了作者数...

Global site tag (gtag.js) - Google Analytics