Day 10垃圾收集器
2022-03-18 本文已影响0人
小周爱吃瓜

- 垃圾算法:
1.标记清除
找出内存中需要回收的对象,并且将其标记出来。
所有的对象都会被扫描一遍,比较耗时。

缺点:碎片多,不利于以后大对象的分配。没有连续空间的时候不得不提前触发一次gc.
-
标记复制(空间换时间)
-
标记整理
复制的是存活的对象,所以如果对象过多的话就比较耗费性能。 -
分代
Young: 复制算法
Old:清除或者整理
垃圾收集器:

- Serial 单线程收集器
- cms 老年代追回停顿时间的收集器,缺点是容易产生浮动垃圾
- ParNew Serial的可以理解成多线程版本
- serial old 老年代
- g1
G1将堆内存分成不同的区域然后并发的对其进行回收.
G1 --- 看这里
减少内存碎片
可预测的停顿时间,化整为0,可以区域化的进行扫描,不用全局扫描
高吞吐量
取代了CMS,没碎片,停顿时间变短,吞吐量变高.

G1: 不一定要是物理上的连续,只要逻辑上连续即可,零碎的区域可以指向同一块地址,整理成同一片内存区域,形成连续的内存区域。
复制算法能够减少内存碎片.

- 初始标记: 应用线程暂停
并发标记: 提升标记效率
重新标记:修改并发标记因并发标记产生的垃圾
并发清理: 清除不可达的内存空间.