繁体   English   中英

Node.js的垃圾收集器

[英]Node.js' garbage collector

我从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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM