1. G1理论基础
关于G收集器的收集过程,读了一些博客和书籍,基本上十有八九是不同的,如果你想确定哪个是正确的或必须看到实现代码。当然,我不打算学习C语言来阅读代码,然后结合我自己的理解和信息来介绍它G1收集器收集过程,努力实现第一次接触G也能看清楚。
1.1. G1介绍
G1可以说是里程碑式的产品,从提出到正式商业使用近10年,从jdk9默认使用的垃圾收集器是G1.以后会逐渐取代CMS。G与以前的垃圾收集器相比,1有明显的区别。例如,它可以收集新时代和老年人,其他收集器是新一代收集器 老年收集器的组合;同时,堆的划分也与传统的堆的划分有明显的不同;
如果忽略永久代,可以将堆划分为新一代Eden 2 个Survivor以及一大块老年人,然后分代收集,如下图所示:
再看G1收集器将整个堆分成许多大小相同的region,region大小为2的n次幂,而且不要求region空间是连续的。每个Region则可以扮演eden、survivor、old三个角色之一。其实还有humonous该区专门用于存储大对象,将大对象定义为大小region一半大小的对象,因为G它将被视为老年人,所以在这里放在一起。另外每个region角色并非一直不变。
这可以解释为什么取名G1收集器:收集器根据用户指定的停顿时间制定回收计划。简单地说,收集各区域的回收价值,如一些region中对象存活的极少,那么该region肯定排得很高,优先收集。因为收集这一块region很少移动物体只需要很少的时间,同时释放大量内存,必须优先收集该区域。这就是G1(Garbage First)名字的起源。
G1只有YongGC(YGC)和mixed gc,YGC用来收集所有的新生代,mixed gc它收集了所有的年轻人和高收入的老年人。当发生时Full GC将使用单线程GC,非常耗时,应尽量避免Full GC发生了。以下是介绍。G1回收过程阐述了使用G与其它收集器相比,1的优势。
生意营销3大宝:彩铃、定位、认证,一个也不能少,如有需要,添加 微信:xnc528 备注:3
如若转载,请注明出处:https://www.clzz8.com/6327.html