美文网首页jvm&java basic
CMS、G1、ZGC的堆内存实现区别

CMS、G1、ZGC的堆内存实现区别

作者: 技术灭霸 | 来源:发表于2020-03-25 03:22 被阅读0次

CMS

CMS堆内存和以往的垃圾回收器一样,分为新生代和老年代,新生代和老年代是物理隔离的。


image.png

这些space必须是地址连续的空间。

G1

G1打破了以往将收集范围固定在新生代或老年代的模式,GI 将 Java 堆空间分割成了若干相同大小的 区域,即 region,包括 Eden、
Survivor、 Old、 Humongous 四种类型。其中, Humongous 是特殊的 Old 类型,专门 放置大型对象。这样的划分方式意昧着不需要一个连续的内存空间管理对象。 GI 将 空间分为多个区域,优先回收垃圾最多的 区域。 GI 采用的是 好的空间整合能力’不会产生大量的空间碎片。

Region的数值是在1M到32M字节之间的一个2的幂值数,JVM会尽量划分2048个左右、同等大小的Region。

GI 的一大优势在于可预测的停顿时间, 能够尽可能快地在指定时间内完成垃圾回收任务。在 JDKl l 中,已经将 GI 设为默认 垃圾回收器。

image.png

ZGC

和G1类似,但ZGC的region的大小更加灵活和动态。zgc的region不会像G1那样在一开始就被划分为固定大小的region。

zgc的region核心亮点就是:动态。

动态表现为:

  1. 动态地创建和销毁。
  2. 动态地决定region的大小。它的最小单位是2MB的一个块。然后每个region的大小就是是2MB*N就是。

而且他有个概念叫:size groups。有三种:

  • Small:就是一个2MB的region。
  • Medium:32mb。2MB*16。
  • Large:N*2MB。

整个heap长这样:


image

相关文章

  • CMS、G1、ZGC的堆内存实现区别

    CMS CMS堆内存和以往的垃圾回收器一样,分为新生代和老年代,新生代和老年代是物理隔离的。 这些space必须是...

  • Java JVM ZGC垃圾回收器

    1.ZGC简介 ZGC(Z Garbage Collector)是一款基于Region内存布局(有点类似于G1)的...

  • GC:垃圾回收算法

    简述 G1、ZGC G1 之前都是将内存看做两块整体(Young 和 Old 区)。 G1 是将内存分成一小块一小...

  • 常用jvm启动参数

    jdk8+G1现在看是个主流组合,cms确实配置太繁琐了,所以jdk后续已经弃用了cms主推G1和zgc这种不太需...

  • ZGC 详解

    目录 ZGC简介和性能 ZGC流程介绍 ZGC堆的内存布局 ZGC对NUMA支持 颜色指针在ZGC中的运用 读屏障...

  • 《Java 虚拟机原理》5.3 G1 原理剖析及日志分析

    1.G1 介绍 G1 与 GMS 垃圾收集器的区别:① CMS 在老年代产生了内存碎片,导致对象的内存分配是采用了...

  • CMS G1 ZGC三大垃圾收集器大比拼

    今天这篇文章来介绍一下三大核心的垃圾收集器CMS G1 ZGC,并对它们的特点作简要分析。 1.CMS 首先来看看...

  • G1 gc 分析

    G1收集器的设计目标是取代CMS收集器,它同CMS相比,在以下方面表现的更出色: 内存碎片:G1是一个有整理内存过...

  • JVM 面试必问的 CMS,你懂了吗?

    前言 虽然 CMS 已经是很古老的垃圾回收器了,大家现在动不动就G1、ZGC啥的,但是据我所了解,还是有很多公司的...

  • 路漫漫之 - jvm G1 垃圾回收器

    因为G1的堆内存划分和这不太一样。我就来详细的探讨下G1。G1收集器采用不同的方法来分配堆, G1 将内存分配为 ...

网友评论

    本文标题:CMS、G1、ZGC的堆内存实现区别

    本文链接:https://www.haomeiwen.com/subject/llbzyhtx.html