v8
垃圾回收机制
使用分代回收策略,分为新、老生代.
- 新生代: 新生代的堆内存被分为多个 SemiSpace 空间,每个 SemiSpace 分为两部分 from 和 to,分配对象空间时,只在 from 中分配,to 是闲置的,垃圾回收机制会按照以下步骤:
- 查找 from 中还存活的对象,将其全部移入到 to
- 反转 from 和 to
- 对 to 尽数回收
- 新生代 -> 老生代
- 新生代垃圾回收机制中,from 中的对象经过多次复制依然还存活,就将其移入老生代
- 在反转 from 和 to 的过程中,如果 to 空间的使用量超过了 25%,那么 from 中的对象全部移入老生代
- 老生代
- 标记删除: 对象已死亡,会直接被剃掉删除
- 标记合并: 将存活的对象移到一边,将被回收的对象移到另一边,直接对可被回收的区域进行整体的垃圾回收