02.HotSpot垃圾分代回收算法

2021-06-28  本文已影响0人  exceptioneee

新生代

默认情况下占内存的三分之一
新生代的特点:绝大多数对象都在新生代被创建,这里的垃圾回收非常频繁,且速度很快,每次新生代的垃圾回收之后只有少量对象可以存活
所以新生代通常使用复制算法进行垃圾回收,我们只用把少量的存活对象复制走,就可以把当前这块内存区域一下子全部清空来实现垃圾回收,由于存活的对象数量非常,所以复制成本是很的。

老年代

默认情况下占内存的三分之二
新生代进入老年代的两种方式

  1. 经历过数次minor gc后依旧存活,达到年龄阈值,晋升进入老年代。
  2. Survivor区空间不足了,直接过早老化进入老年代
    此外,老年代对象也不都是来自于新生代的,有一些大数组或者特别大的字符串,它们也会直接在老年代中创建,也就不存在晋升这个过程了。
    由于老年代中对象存活率比较高,空间也比较大,这里发生垃圾回收的频率是比较低的,老年代通常使用标记整理算法进行垃圾回收。(即首先将存活对象标记,然后将他们移动到一端,最后将端边界以外的区域清空,完成一次垃圾回收)老年代的垃圾回收也称之为major gc。
    那么,什么时候会发送major gc呢?
上一篇 下一篇

猜你喜欢

热点阅读