NodeJS需要加载模块的函数,有一个"缓存"(它是一个对象).
条目是这个缓存是垃圾收集一旦我不再使用该模块?(如果再次使用,将导致从磁盘加载)
我认为答案是"不",但我没有在网上找到任何参考
条目是这个缓存是垃圾收集一旦我不再使用该模块?
否.require()无论您是否使用过,模块都会无限期地缓存.
模块使用的Javascript变量/对象的内存根据垃圾收集的所有常规规则进行垃圾收集(当没有仍然具有对变量/对象的引用的实时代码时).但是,模块高速缓存保留对已加载模块本身的引用,因此除非从高速缓存中手动删除模块,否则不会对代码或任何模块级变量进行垃圾回收.
这是关于该主题的node.js doc的链接.
高速缓存
模块在第一次加载后进行缓存.这意味着(除其他外)每次调用require('foo')将获得完全相同的返回对象,如果它将解析为同一个文件.
如果要从缓存中手动删除模块,请在此处进行说明:
虽然,这将允许所有模块级变量被垃圾收集,鉴于node.js的结构方式,我认为它实际上不会从内存中卸载代码.
| 归档时间: |
|
| 查看次数: |
587 次 |
| 最近记录: |