`
Chris_Ma
  • 浏览: 9083 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

node.js 垃圾回收

 
阅读更多

 

V8脚本引擎

 

垃圾回收机制

 

1.scavenge

scavenge主要采用了cheney算法。

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

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

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

 

2.Mark-sweep

 

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

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

 

3.Mark-Compact

 

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

缺点:执行效率慢。

 

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

 

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

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics