NodeJS require函数,它加载模块,有一个“缓存”(它是一个对象)。
条目是这个缓存是垃圾收集一旦我不再使用该模块? (如果再次使用,将导致从磁盘加载)
我认为答案是“不”,但我没有在网上找到任何引用
答案 0 :(得分:8)
条目是这个缓存在我不再使用后被垃圾收集 模块?
没有。加载require()
的模块无论是否使用它们都会无限期缓存。
模块使用的Javascript变量/对象的内存是垃圾收集,受垃圾收集的所有常规规则的限制(当没有仍然具有对变量/对象的引用的实时代码时)。但是,模块缓存会保留对已加载模块本身的引用,因此除非从缓存中手动删除模块,否则代码或任何模块级变量都不会被垃圾收集。
这是关于该主题的link to the node.js doc。
缓存
模块在第一次加载后进行缓存。这个 意味着(除其他事项外)每个要求的呼叫(' foo')都会得到 返回完全相同的对象,如果它将解析为相同 文件。
如果要从缓存中手动删除模块,请在此处进行说明:
尽管如此,这将允许所有模块级变量被垃圾收集,因为node.js的结构方式我不认为它实际上会从内存中卸载代码。