Javascript 主干模型服务器端和内存处理

Javascript 主干模型服务器端和内存处理,javascript,node.js,backbone.js,express,Javascript,Node.js,Backbone.js,Express,如果我在server node.js上有一个主干模型,并使用Express在每条路由上插入数据,该模型会无限增长吗?当模型执行了它应该执行的操作时,我是否应该手动清除内存 伪示例: var model = require('./model') route.index = function() { var key = new Date() model.set(key, 'foobar') console.dir(model.toJSON()) } 在浏览器中每次重新加载

如果我在server node.js上有一个主干模型,并使用Express在每条路由上插入数据,该模型会无限增长吗?当模型执行了它应该执行的操作时,我是否应该手动清除内存

伪示例:

var model = require('./model')

route.index = function() {
    var key = new Date()
    model.set(key, 'foobar')
    console.dir(model.toJSON())
}

在浏览器中每次重新加载时,此模型都会增长。我的问题是:我是否需要手动清空模型,或者节点中是否有垃圾收集器来处理此问题?

节点中有垃圾收集器,但它不会清理此模型,因为它总是在代码中引用

一旦您通过破坏模型或在其位置保存新变量来破坏引用,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();
}

但是这样做似乎不安全,因为这个模型可以在其他地方使用。

model.set也将对象作为参数,但这不是重点,它只是一个伪代码示例。我只是问node.js将如何处理这样的代码,如果我需要手动清除每个请求的模型,f.ex。你的语法是错误的。set{key:foobar}每次都会将key属性设置为foobar。没有内存泄漏。您必须执行model.setkey、foobar或ES6 model.set{[key]:foobar}来引入内存泄漏。在“./model”中,是否导出新模型?ie module.export=新主干网。Model@CoryDanielson是的,但它实际上是一个收藏。并不是说这会有所不同,对吧?不,没有区别。我只是想知道。。。单身人士可能很难相处。。。事实上,我自己在工作中整天都在为这个问题而挣扎。