如果我在服务器上有一个骨干模型(node.js)并在每条路径上插入数据(使用Express),那么该模型会无限增长吗?当模型执行了它应该执行的操作时,我应该手动清除内存吗?
伪示例:
var model = require('./model')
route.index = function() {
var key = new Date()
model.set(key, 'foobar')
console.dir(model.toJSON())
}
在浏览器中每次重新加载时,此模型都会增长。我的问题是:我是否需要手动清空模型,或者是否有垃圾收集器"在将负责此事的节点中?
答案 0 :(得分:0)
Node中有一个垃圾收集器,但它不会清理这个模型,因为它总是在你的代码中被引用。
一旦你通过破坏模型,或者在它的位置保存一个新变量,或偶尔清空它的属性,节点就能够清理它。
if ( _.keys(model.attributes).length > 1000 ) {
model.attributes = _.result(model, 'defaults') || {}; // reset the model to it's default values
// or model = new Backbone.Model();
}
但这似乎是一件不安全的事情,因为这个模型可以在其他地方使用。