概述
我过去读过一些关于 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
?