首页 > 解决方案 > 是否可以在 nodejs 中释放所需的模块?

问题描述

当你import在 nodejs 中创建一个文件时,它会被加载、评估和缓存。

如果您知道您将永远不会再次使用它(或者可能在很长一段时间内,值得再次编译它),是否可以释放该文件的内存。

我想要做的是导入一个临时文件,读取它的代码,执行一次然后永远释放它(我知道它不会再次被使用,我不想有内存泄漏)

基本上是在nodejs中有动态代码。

codility这样的页面允许您输入代码并在后端执行,应该使用类似的解决方案......除非他们使用该代码运行一个完整的新 nodejs 实例......然后将其杀死。

可能吗?如果是这样,怎么做?

标签: node.js

解决方案


您可以像这样从模块缓存中删除。只要确保没有循环依赖,否则模块实际上不会从内存中释放

delete require.cache[require.resolve('./theModuleYouWantToDelete.js')]

推荐阅读