繁体   English   中英

从Node.js中释放所需的模块

[英]Release required module from Node.js

如何在运行时释放Node.js模块以节省内存或提高整体性能。

我的应用程序在运行时动态地在Node.js中加载模块,但不卸载任何模块。 我正在寻找这样的功能。 在代码加载模块后更新已更改的模块; 并卸载可能无法进一步使用的模块。

任何见解?

谢谢。

听起来你正在创建某种插件系统。 我想看看Node VM: http//nodejs.org/docs/latest/api/vm.html

它允许您在沙箱中加载和运行代码,这意味着当它完成所有内部分配时,应该再次释放它。

它被标记为不稳定,但这并不意味着它不起作用。 这意味着API可能会在未来的Node版本中发生变化。

例如,基于节点的smtp服务器Haraka使用VM模块(重新)加载插件。

要卸载脚本,您可以执行以下操作:

delete require.cache['/your/script/absolute/path']    // delete the cache
var yourModule = require('/your/script/absolute/path') // load the module again

因此,如果您有插件模块,您可以观察这些文件的更改,然后动态卸载(删除缓存),然后再次需要该脚本。

但请确保您没有泄漏内存,您可以将更改的模块重新分配给旧变量。 这是一个方便的工具,您可以检查内存: node-memwatch

祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM