Day 10垃圾收集器

2022-03-18  本文已影响0人  小周爱吃瓜
Screen Shot 2022-03-18 at 9.59.52 PM.png

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

Screen Shot 2022-03-18 at 10.02.30 PM.png

缺点:碎片多,不利于以后大对象的分配。没有连续空间的时候不得不提前触发一次gc.

  1. 标记复制(空间换时间)

  2. 标记整理
    复制的是存活的对象,所以如果对象过多的话就比较耗费性能。

  3. 分代

Young: 复制算法
Old:清除或者整理

垃圾收集器:

Screen Shot 2022-03-18 at 10.06.57 PM.png
  1. Serial 单线程收集器
  2. cms 老年代追回停顿时间的收集器,缺点是容易产生浮动垃圾
  3. ParNew Serial的可以理解成多线程版本
  4. serial old 老年代
  5. g1

G1将堆内存分成不同的区域然后并发的对其进行回收.

G1 --- 看这里
减少内存碎片
可预测的停顿时间,化整为0,可以区域化的进行扫描,不用全局扫描
高吞吐量
取代了CMS,没碎片,停顿时间变短,吞吐量变高.

Screen Shot 2022-02-06 at 10.15.21 PM.png

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

Screen Shot 2022-03-18 at 10.10.46 PM.png
上一篇下一篇

猜你喜欢

热点阅读