Node是否需要收集缓存垃圾?

Bru*_*ant 7 node.js

NodeJS需要加载模块的函数,有一个"缓存"(它是一个对象).

条目是这个缓存是垃圾收集一旦我不再使用该模块?(如果再次使用,将导致从磁盘加载)

我认为答案是"不",但我没有在网上找到任何参考

jfr*_*d00 8

条目是这个缓存是垃圾收集一旦我不再使用该模块?

否.require()无论您是否使用过,模块都会无限期地缓存.

模块使用的Javascript变量/对象的内存根据垃圾收集的所有常规规则进行垃圾收集(当没有仍然具有对变量/对象的引用的实时代码时).但是,模块高速缓存保留对已加载模块本身的引用,因此除非从高速缓存中手动删除模块,否则不会对代码或任何模块级变量进行垃圾回收.

这是关于该主题的node.js doc链接.

高速缓存

模块在第一次加载后进行缓存.这意味着(除其他外)每次调用require('foo')将获得完全相同的返回对象,如果它将解析为同一个文件.

如果要从缓存中手动删除模块,请在此处进行说明:

卸载代码/模块

虽然,这将允许所有模块级变量被垃圾收集,鉴于node.js的结构方式,我认为它实际上不会从内存中卸载代码.