JVM GC算法和垃圾收集器

算法

  • 标记-清除:产生大量离散碎片
  • 复制算法:三个区域eden(大)+2*survivor(小);每次在eden新建对象,gc的时候复制到另外一个survivor中,清除以前的两个区域。
  • 标记-整理:压缩可用区域,将可用对象挤在一起

垃圾收集器
垃圾收集器

  • Serial 收集器(新生代):单线程阻塞所有用户进程,采用复制算法清理新生代
  • Serial Old 收集器(老年代):Serial的老年代收集版本,采用标记整理算法
    垃圾收集器
  • ParNew 收集器(新生代):Serial的多线程版本,采用多线程复制算法
  • Parallel Scavenge 收集器(新生代):和ParNew类似,更专注于提高吞吐量(=运行代码时间/运行代码时间+GC时间),自适应调节各个区域的比例、晋升老年代对象大小,达到一个更高的吞吐量
    垃圾收集器
  • Parallel Old收集器(老年代):于Parallel Scavenge配合,多线程标记整理算法回收老年代
    垃圾收集器
  • CMS收集器(Concurrent Mark Sweep)(老年代):多线程标记清除算法。
    步骤:
    • 初始标记:标记GC ROOT直接关联对象
    • 并发标记:从GC ROOT一路往下标记
    • 重新标记:标记用户程序变化的那一部分
    • 并发清理:清理无效对象

垃圾收集器

  • G1 收集器(整个堆):将堆内存划分成很多的大小相等的独立区域,然后标记之后对每个区域的回收价值大小排序,优先从价值大的区域开始回收。
    将需要回收的区域存活对象复制到其他不需要回收的区域中。
    步骤:(每个区域有一个数据结构保存该区域的标记对象集合)
    • 初始标记:标记GC ROOT直接关联对象
    • 并发标记:从GC ROOT一路往下标记
    • 最终标记:将二次标记的结果加进本区域的标记集合中
    • 筛选回收:筛选价值最大的区域开始回收
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值