在学习GC机制时,发现有些东西通过普通的jvm参数是很难看到的,比如在ParallelGC触发悲观机制时,如果想看到此时新生代的平均晋升大小似乎就不可能的,发现在JDK源代码中有类似下面这样的if块:
if (PrintGCDetails && Verbose) {
gclog_or_tty->print(result ? " do scavenge: " : " skip scavenge: ");
gclog_or_tty->print_cr(" average_promoted " SIZE_FORMAT
" padded_average_promoted " SIZE_FORMAT
" free in old gen " SIZE_FORMAT,
(size_t) policy->average_promoted_in_bytes(),
(size_t) policy->padded_average_promoted_in_bytes(),
old_gen->free_in_bytes());
if (young_gen->used_in_bytes() <
(size_t) policy->padded_average_promoted_in_bytes()) {
gclog_or_tty->print_cr(" padded_promoted_average is greater"
" than maximum promotion = " SIZE_FORMAT, young_gen->used_in_bytes());
}
}
这里即使打开了-XX:+PrintGCDetails选项也是不行的,因为只有在Debug版本中,才能够设置-XX:+Verbose参数。
Debug版本的JDK的下载地址如下:
http://download.java.net/jdk6/6u25/promoted/b03/binaries/
或者使用如下方法自己搞一个Debug的Build(还没有试):
http://www.softwareengineeringsolutions.com/thoughts/Java-Debug-Build.htm
有了Debug版本的JDK后,在jvm参数中需要增加以下值:
引用
-Xloggc:./gc.log
-XX:+PrintGCDetails
-XX:+Verbose
运行程序后再看看gc.log,可以看到日志信息多了很多,找到触发fullGC的地方,可以看到以下日志:
引用
full after scavenge: average_promoted 6291504 padded_average_promoted 6291504 free in old gen 4194256
很清楚,是因为MinorGC后的悲观策略检查发现平均晋升大小(6MB)>旧生代剩余大小(4MB)导致的FullGC。
分享到:
相关推荐
对tomcat的gclog日志进行分析,进行可视化展示,可以查看一些配置参数,检查是否软件是否运行正常
IBM gc 日志分析工具IBM gc 日志分析工具IBM gc 日志分析工具IBM gc 日志分析工具IBM gc 日志分析工具IBM gc 日志分析工具IBM gc 日志分析工具IBM gc 日志分析工具IBM gc 日志分析工具IBM gc 日志分析工具
日志分析类项目,对gc日志的分析,得出最优的系统优化方案
机器 gc 日志上传,用于分析问题,主要是 查看gc有无问题
适用于jvm运行生成的gc日志文件可视化分析
GChisto及CMS GC相应补丁文件,补丁文件未亲测。 This patch adds the following features and improvements when using CMS GC in incremental mode: detecting Full GCs corrected parsing errors when using -XX:...
08.GC日志1
GChisto是一款优秀的GC日志分析工具。解压后双击GChisto.jar运行程序。enjoy it.
JVM 输出 GC 日志导致 JVM 卡住
GChisto是一款专业分析gc日志的工具,可以通过gc日志来分析:Minor GC、full gc的时间、频率等等,通过列表、报表、图表等不同的形式来反应gc的情况。虽然界面略显粗糙,但是功能还是不错的。 配置好本地的jdk环境...
主要介绍了Java虚拟机GC日志分析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
gclog是一个go日志管理库,基于go标准库的log创建,拥有动态变更级别、自动切分、自动删除过期日志等功能
java垃圾回收日志分析工具GCViewer,包内含有15年9月1日所能下载到的最新代码及代码打包的jar文件,双击即可执行。 本GCViewer是最新版本的,是JDK1.8编译并支持JDK1.8的GC 日志文件分析。 GCViewer是业内支持率很高...
GCViewer 能否分析 java 程序 GC 日志,能否图表展示堆内存,年轻代,老年代,永久带以及full gc 的使用情况
gcviewer-1.36 jc日志分析工具.支持jdk1.8.. gcviewer-1.36 jc日志分析工具.支持jdk1.8..
[GCViewer](https://github.com/chewiebug/GCViewer) 是一款开源的GC日志分析工具。项目的 GitHub 主页对各个指标提供了完整的描述信息 你需要安装了JDK或者Java. 解压之后, 然后双击点击 start.cmd 当然, 直接在...
gcviewer是一款不错的可视化gc查看工具 能分析 java 程序 GC 日志,非常好的一款工具。值得推荐
SENSOR_GC1054的寄存器配置以及基本图像配置