【发布时间】:2012-05-18 18:14:30
【问题描述】:
概述
我过去读过一些关于 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的重复实例化(和可能的删除)效率显着提高?
参考文献
【问题讨论】:
标签: javascript node.js memory-management express