JVM垃圾收集行为分析方法
侧边栏壁纸
  • 累计撰写 307 篇文章
  • 累计阅读 104.3万

JVM垃圾收集行为分析方法

TOTC
2020-01-11 / 615 阅读 / 正在检测是否收录...

尽管某些监控工具,如:jvisualvm,可以实时提供垃圾收集图表和指标,但它们并没有提供GC行为完整的详细信息,GC日志是研究垃圾收集行为的最佳信息来源。

启用GC日志

可以通过指定以下JVM参数来启用GC日志:

Java 8及以下版本

-XX:+PrintGCDetails -Xloggc:<gc-log-file-path>
Example:
-XX:+PrintGCDetails -Xloggc:/opt/tmp/myapp-gc.log

Java 9及以上版本

-Xlog:gc*:file=<gc-log-file-path>
Example:
-Xlog:gc*:file=/opt/tmp/myapp-gc.log

注意事项

一般需要观察24小时的GC日志,这样就会同时看到高流量和低流量的情况。

建议从生产环境中收集GC日志,因为垃圾收集行为受流量模式的影响很大,在测试环境中很难模拟生产流量。

我们进行2次测试:

基线测试——使用JMeter工具在没有启用垃圾收集GC日志的情况下运行应用程序20分钟,同时有200个并发用户。

GC日志启用测试——使用相同的JMeter脚本运行应用程序并启用垃圾收集GC日志,持续时间为20分钟,同时有200个并发用户。

对比结果如下:

q1.png

如图所示,CPU和内存消耗没有明显差异,同样,平均响应和事务吞吐量也没有明显差异,通过实验可以看出,GC日志在生产服务器中增加的开销可以忽略不计。

分析工具

捕获GC日志后,可以使用以下免费工具之一来分析GC日志:

1.GCeasy

2.IBM GC & Memory visualizer

3.HP Jmeter

4.Garbage Cat

13

评论

博主关闭了所有页面的评论