竹笋

首页 » 问答 » 灌水 » 我就知道接下来面试官要问我G1收集器的原
TUhjnbcbe - 2024/5/11 16:39:00

你好呀,我是可乐。

先前,我为大家分享过G1垃圾回收器的前置基础知识,不知道有没有小伙伴还记得呀?不知道的小伙伴可以看我先前的文章哦!

今天的我们来点硬核的吧,总结下有关G1收集器大概的知识点吧,一起来看下吧!

G1为什么要设计出G1收集器?

我们平时在学习一个新技术时,一定要保持着一颗怀疑和好奇的心。这是我们程序员要做到的一点。

这里我说下,jvm团队设计出G1收集器,就是为了取代CMS收集器的,虽然CMS收集器也还不错,但是,在很多场景下还是有诸多问题的,缺陷暴露无遗了。

CMS收集器到底存在哪些缺点呢?

CMS只适合用于老年代收集垃圾,采用了标记-清除算法。标记-清除算法有个大的问题,就是会产生大量的碎片化问题,如果恰好你们业务代码,有一个大对象时,大有可能会频繁触发FullGC。我们都知道频繁FullGC,可能会给应用程序带来卡顿。再者,CMS使用串行老年代收集器单线程清理堆内垃圾的。

在先前收集器中,如果对象大小大于新生代内存空间,则直接晋升为老年代,如果该对象不是频繁使用,那么会非常浪费堆内存空间的。我们能够想到,能否有一款收集器即可以手机新生代垃圾,又可以收集老年代的尼?这个时候,G1收集器就应运而生了,它不是凭空出世的。说白了,G1的设计理念结合了CMS收集器的优缺点,就是来取代CMS收集器的。

G1什么是G1收集器?

首先,我们来看下官方对其定义是怎么样的。

TheGarbageFirstorG1garbagecollectorisavailableinJava7andisdesignedtobethelongtermreplacementfortheCMScollector.TheG1collectorisaparallel,concurrent,andincrementally

1
查看完整版本: 我就知道接下来面试官要问我G1收集器的原