Node.js的垃圾收集器

dhr*_*ird 8 javascript garbage-collection node.js

我从node.js的这个线程垃圾收集中学到了node.js使用的是分代GC.

我经常使用循环对象引用(我删除/确保最终超出范围)并且想知道node.js是否处理好它们.所以对于例如.如果它是使用ref完成的.计数,会有问题,所以我想知道节点有多好.

一些使用场景:

  1. 对于每个http请求,我创建一个带有lambda的setTimeout,该lambda可能引用了scope对象.scope对象还引用了timeout对象等...

  2. 对于每个用户会话,我有一个指针(仍在进行C编程)对http请求对象的引用,它也引用了会话对象等...请求对象经常被删除,但会话对象不被删除.

编辑:我问因为我在网上找到这个链接http://lifecs.likai.org/2010/02/how-generational-garbage-collector.html

Ami*_*mir 11

正如您所提到的,NodeJS使用世代GC ...特别是v8.因此,它不做引用计数类型GC.相反,它执行完整的标记和扫描类型的GC.

因此,只要你摆脱对一组对象的所有引用(即使它们循环指向彼此),它们应该在某个时刻收集垃圾.

这并不意味着你不应该关心GC.如果你有一个非常活跃的NodeJS服务器,垃圾收集器将很难清理你的垃圾,特别是如果你有很多"中等寿命"的对象(即不短或长寿).