垃圾回收器是否从 NodeJS 中的内存中抽打过时的所需模块



我正在阅读Stack Overflow上关于在NodeJS中延迟加载和手动卸载模块的一些答案,其中一个答案被引用

节点是单线程的,因此加载模块的内存占用量不是每个连接,而是每个进程。加载模块是一次性的,以将其放入内存中。

这是一个足够公平的解释,但是有一个问题是,当旧的未使用的模块(以前需要并且不再用于执行)从缓存中清除时,是否存在某个时间点?在这种情况下,垃圾收集器如何工作?

更新:

此答案显示了如何从缓存中手动删除模块,这也表明模块缓存可能与常规内存中对象不同

var name = require.resolve('moduleName');
delete require.cache[name];

Node 关于模块的文档说它们是缓存的(在 v5 文档中似乎也没有不同),并且没有建议缓存释放其对模块的引用的任何机制。只要存在对模块的引用(例如,在缓存机制中),它就会像任何其他 JavaScript 对象一样保留在内存中。

最新更新