Javascript Node.js';垃圾收集器

Javascript Node.js';垃圾收集器,javascript,garbage-collection,node.js,Javascript,Garbage Collection,Node.js,我从这个线程中了解到node.js使用分代GC 我经常使用循环对象引用(我删除/确保这两个引用最终都超出范围),我想知道node.js是否能很好地处理它们。所以对于例如,如果使用ref.counting进行计算,就会出现问题,所以我想知道node在这方面有多好 一些使用场景: 对于每个http请求,我使用lambda创建一个setTimeout,该lambda可能引用范围对象。范围对象也有一个对超时对象的引用,等等 对于每个用户会话,我都有一个指向http请求对象的指针(仍在进行C编程),它也有

我从这个线程中了解到node.js使用分代GC

我经常使用循环对象引用(我删除/确保这两个引用最终都超出范围),我想知道node.js是否能很好地处理它们。所以对于例如,如果使用ref.counting进行计算,就会出现问题,所以我想知道node在这方面有多好

一些使用场景:

  • 对于每个http请求,我使用lambda创建一个setTimeout,该lambda可能引用范围对象。范围对象也有一个对超时对象的引用,等等

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


  • 编辑:我问这个问题是因为我在网上找到了这个链接

    正如你提到的,NodeJS使用一个分代的GC。。。明确地因此,它不执行引用计数类型GC。相反,它执行完全标记和扫描类型GC

    因此,只要您删除了对一组对象的所有引用(即使它们彼此循环指向另一个对象),它们就会在某个时候被垃圾收集


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

    有关引用计数示例,请参阅IPCNode代码

    谢谢。您知道node.js(v8)GC是在另一个线程中运行还是在同一个线程中运行(与js执行相同)?你有相同的链接,我可以查找吗?相同的线程。这是一个停止世界世代的GC。。。但其他大多数人也是如此。有一些信息,但可能对你没用。若您担心一些事情,您可能想先看看人们在.NET或Java中使用的解决方案,它们在GC方面是相似的。您可以随时询问有关stackoverflow的具体问题:)