1/1/1970 • ☕️ 1 min read
垃圾回收
- 新生代(存放比较小,很快被回收)[副垃圾回收器]
- 经历两次新生代就放进老生区(对象晋升策略)
- Scavenge 算法来处理。是把新生代空间对半划分为两个区域,一半是对象区域,一半是空闲区域,回收时直接把对象区域可用的对象挪动到空闲区,原对象区域之间清空,循环往复
- 新加入的对象都会存放到对象区域,当对象区域快被写满时,就需要执行一次垃圾清理操作。
- 老生代
- 标记 - 清除 -整理
- 清除算法里的是一样的,但后续步骤不是直接对可回收对象进行清理,而是让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存
- 为了降低老生代的垃圾回收而造成的卡顿,V8 将标记过程分为一个个的子标记过程,同时让垃圾回收标记和 JavaScript 应用逻辑交替进行,直到标记阶段完成,我们把这个算法称为增量标记(Incremental Marking)算法。