Java体系性能测试进阶必须了解的知识点——GC日志分析

61 篇文章 1 订阅
60 篇文章 3 订阅

GC定义

GC(Garbage Collection)是垃圾收集的意思,内存处理是程序员编码容易产生问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否需要进行垃圾回收。所以,Java的内存管理实际上就是对象的管理,其中包括对象的分配和释放。GC日志是分析GC相关问题的重要线索,即便是在生产服务器上,也建议开启,程序员应当学会通过相应工具理解和分析GC日志内容。

开启GC的方法

在JVM中设置参数 -verbose:gc 或-XX:+PrintGC,默认GC日志是关闭的。

GC命令其他重要的参数

-XX:+PrintGCDetails 创建更详细的GC日志,默认关闭;XX:+PrintGCTimeStamps

-XX:+PrintGCDateStamps 可用于分析GC之间的时间间隔,默认关闭,建议开启;

-Xloggc:filename 指定将GC日志输出到具体文件,默认为标准输出;

-XX:Number01GCLogtiles及-XX:UseGCLogfileRotation 控制日志文件循环,默认是0,即不作任何限制。

命令启动jar 生成gc日志

通过命令启动jar包,进行gc日志采集

java -Xms20m -Xmx20m -XX:+UseConcMarkSweepGC -XX:+PrintGC -verbose:gc -Xloggc:D:\gc.log 
-XX:+PrintGCDetails -jar  D:\lesson\new\idea\out\artifacts\memoryleak_jar\memoryleak.jar

上面的代码中d:\gc.log就是生成的gc日志,我们可以通过gc日志来查看Java程序的gc详情。

关于GC日志的分析讲解

以下面这段gc日志为例:

0.226: [GC (Allocation Failure) 0.226: [ParNew: 6144K->640K(6144K), 0.0167374 secs] 10568K->10863K(19840K), 0.0169029 secs] [Times: user=0.09 sys=0.02, real=0.02 secs]

ParNew(是新生代垃圾回收器)

6144K表示使用新生代GC前,占用的内存,->640k表示GC后占用的内存,(6144K)代表整个新生代总共大小,用时0.0167374 secs

10568K(GC前整个JVM Heap对内存的占用)->10863K(MinorGC后内存占用总量)(19840K)(整个堆的大小)0.0169029 secs(Minor GC消耗的时间)]

[Times: user=0.09 sys=0.02, real=0.02 secs] 用户空间,内核空间,real整个的时间消耗

[Full GC (Allocation Failure) 0.358: [CMS: 13695K->13346K(13696K), 0.0418278 secs] 19839K->18311K(19840K), [Metaspace: 3063K->3063K(1056768K)], 0.0419042 secs] [Times: user=0.05 sys=0.00, real=0.04 secs]

Full GC(表明是Full GC) CMS:(老年代GC)13695K(GC前多大)->13346K(GC后)(13696K)

老年代总容量 19839K(GC前整个Heap空间大小)->18311K(GC后整个Heap空间大小) (19840K) (整个Heap大小,JVM堆的大小),

[Metaspace: 3063K ->3063K (1056768K) (GC前后基本没变,空间很大)], 0.0419042 sec(GC的耗时,秒为单位)]

 [Times: user=0.05 sys=0.00, real=0.04 secs](用户空间耗时,内核空间耗时,真正的耗时时间)

我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!

  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试开发Kevin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值