概述
我过去读了一些关于JavaScript内存管理的文章,并且知道DOM循环引用等问题。
然而,当这个问题转化到服务器端JavaScript环境中,比如node.js,特别是在express上编写API时,我仍然有点不安。
使用这个示例文件(让我们称之为server.js)
var npm_moduleA = require('npmA')({ someInitArg : 'blah' }),
app = express.createServer();
app.get('/api/foo', function (req, res) {
var result = npm_moduleA.doSomething();
res.send(result);
});
app.get('/api/bar', function (req, res) {
var npm_moduleB = require('npmB')({ someInitArg : 'blah' }),
result = npm_moduleB.doSomethingElse();
res.send(result);
});
问题(假设这是一个高负载网站)
npm_moduleA
的生命周期是什么?它在服务器启动时被创建,但GC何时介入它(如果有的话) - 我猜测它从未被触及,因为它在全局范围内。在'/api/bar/'中,每个请求后是否应该删除
npm_moduleB
?还是只交给 GC 处理。全局初始化
npm_moduleA
比重复实例化(和可能的删除)npm_moduleB
效率显着更高吗?
require('blah')(/* some init args */)
而不仅仅是需要源文件)。我已经更新了我的代码,这可能会影响你的一些答案。 - isNaN1247