node.js 垃圾回收

V8脚本引擎

垃圾回收机制

1.scavenge

scavenge主要采用了cheney算法。

cheney算法采用复制的方式实现。主要用于新生代内存(由于新生代内存生命周期短)。

优点:时间效率高,空间换取时间。

过程:将内存分为一分为二,两部分semispace,分别为 From和To。垃圾回收时,检查From内存中存活的对象复制到To中,释放From空间,并将From和To角色调换。复制条件,如果对象被复制多次晋升到oldspace,如果超过25%,同样晋升。

扫描二维码关注公众号,回复: 694031 查看本文章

2.Mark-sweep

由于老生代对象存活时间都比较长,使用scavenger效率低。mark-sweep 采用遍历标记存活对象,然后清理没有标记的对象。

缺点:清理之后,内存容易碎片化,影响再次分配。

3.Mark-Compact

相比于Mark-sweep,标记之后,将存活对象移动到一块,然后清理。

缺点:执行效率慢。

优先采用Mark-sweep,空间不足采用mark-compact

V8为了减少一次全停顿时间,采用增量和延迟清理技术,将清理和整理过程分小步进行。

猜你喜欢

转载自chris-ma.iteye.com/blog/2274743