Node.js的垃圾收集器

我从这个线程学习了node.js的垃圾回收 ,node.js使用分代GC。

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

一些使用场景:

  1. 对于每个http请求,我都会创build一个带有lambda的setTimeout,这个lambda可能具有对作用域对象的引用。 范围对象也有对超时对象的引用等等。

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

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

正如你所提到的,NodeJS使用了一代GC …特别是V8 。 因此,它不做引用计数types的GC。 相反,它做了一个完整的标记和扫描types的GC。

所以只要你摆脱了所有对一组对象的引用(即使它们循环指向另一个对象),他们也应该在某个时候收集垃圾。

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

请参阅IPCNode代码以供参考计数示例https://github.com/Frans-Willem/IPCNode