垃圾收集器知识点4:Java中垃圾收集器的实现

java8垃圾收集器组合一览

我们知道,针对年轻代和年老代的垃圾回收需要采取不同的gc算法(因为年轻代的内存经常被回收,而年老代的内存很少被回收,根据这个特性所采取的的算法往往是不一样的)。
在java8中,针对年轻代和年老代的垃圾回收,java8采用垃圾收集器组成下列组合;
在这里插入图片描述
现在常用的垃圾收集器组合有4种(上图黑色字体加粗的):

  • 年轻代和年老代使用串行gc(gc就是垃圾收集器garbage collection)
  • 年轻代和年老代使用并行gc
  • 年轻代使用并行gc,年老代使用并发标记清除垃圾收集器
  • 年轻代和老年代使用G1垃圾收集器

serial GC(串行GC)的实现

串行gc对年轻代使用标记-复制算法(mark-copy),对年老代使用标记-清除-整理算法(mark-sweep-compact)。不管是年轻代还是年老代,在触发gc时都会导致全线暂停(STW)。所以串行gc的缺点是不能充分利用多核CPU,JVM在进行垃圾收集时都只能使用单核(不然为啥叫串行呢[doge])。
JVM让年轻代和年老代使用串行GC的指令如下:

java -XX:+UseSerialGC 你要执行的class文件

这个指令执行后项目的JVM就会采取串行GC的方式进行垃圾回收,我们需要打开GC日志进行分析所以启动指令改为:

java ‐XX:+PrintGCDetails ‐XX:+PrintGCDateStamps ‐XX:+PrintGCTimeStamps -XX:+UseSerialGC 你要执行的class文件

串行gc日志分析

接下来根据网上的gc日志图片学习一波gc日志分析
在这里插入图片描述

Minor GC(小型GC)

在这里插入图片描述
上面这个截图就是清理年轻代的gc事件,下面分析一波日志:

  1. 2015‐05‐26T14:45:37.987‐0200:GC事件的开始时间,-0200表示西二时区,中国所在的东8区是+0800.
  2. 151.126:GC事件开始时,相对于JVM启动时的间隔时间,单位秒。
  3. allocation Failure:触发GC的原因。即本次GC是由于年轻代中没有空间来存放新的数据接口引起的。
  4. DefNew:垃圾收集器在
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值