JVM--JVM回收机制图解整理
简介:
- 新生的对象直接分配到->新生代(Eden)- S0是我们的Eden区出现无法存储某些对象的时候或者存储满了只有,整理Eden区就会存放到S0- S1和S0的作用是一样的,但是他是针对S0的- 当我们对象经历过15次GC之后,他就会被移入老年区(Old)
堆分为:新生代、老年代、S0、S1
新生代分配比率 Eden:S0:S1 == 8:1:1
对象的产生怎么分配区域
- 新生的对象直接分配到->新生代(Eden)
- S0是我们的Eden区出现无法存储某些对象的时候或者存储满了只有,整理Eden区就会存放到S0
- S1和S0的作用是一样的,但是他是针对S0的
- 当我们对象经历过15次GC之后,他就会被移入老年区(Old)
15次GC就被认为认定为老年区对象了。
回收算法有哪些?
标记清除
- 优势:清除算法的优点,算法简单,实现容易了。
- 缺点:使用过程中会逐渐产生被细化的分块,不久后就会导致无数的 小分块散布在堆的各处,导致后续对象的分配空间不规整。
标记整理
- 优势:能够有效的解决内存碎片问题
- 缺点:整理阶段,由于移动了可用对象,需要去更新引用。实现相对困难,而且对于内存消耗也会更高
复制清除算法
- 优势:吞吐量大、不会产生碎片问题
- 缺点:内存空间的浪费,GC成本增加
堆分区都用那些对应的回收算法
- 新生代->使用复制回收算法
- 老年代->使用标记整理算法