2013-10-30 57 views
1

在此第一个示例我正在更新现有的MongoDB文档。 date: new Date() 会造成内存泄漏吗?如果不是,为什么? 我在某处读到,无论何时您使用新的关键字分配新对象,您都必须自行释放它。新的Date()是否会在node.js中发生内存泄漏?

var update = { 
    $inc: { wins: 1 }, 
    $push: { pastMatches: { date: new Date, winner: winner, loser: loser } } 
}; 
Character.update({ characterId: winner }, update); 

在该第二示例,我使用以下Express.js中间件错误记录。如果每次在应用程序路由中出现错误时调用它,此代码是否会导致内存泄漏?将新日期()得到垃圾收集或没有?

app.use(function(err, req, res, next) { 
    console.error(new Date, err); 
    res.send(500); 
}); 

谢谢!我试图在我的应用程序中查找内存泄漏,这些是我看到的一些例子。

+6

JavaScript是一个垃圾收集运行时,所以不,你不必自己释放对象。但是,您必须避免“钉住”它们。控制台机制本身就像坐在这样的引用上并不是不可能的。您触发了多少错误? “日期”实例不应该很大。 – Pointy

+1

_我读了一个地方,每当你使用new关键字分配一个新的对象,你必须自己释放它._ - >你确定它是关于JavaScript而不是C++吗? – Tibos

+0

为什么这些特定的代码行可以作为候选人?如果您使用的是您建议的所有移动部件,则有数以万计的其他代码正在执行。 – WiredPrairie

回答

1

这两个对我来说完全没问题。查找用作缓存的对象,不断追加的数组等等。您还应该确定您确实存在内存泄漏,而不仅仅是使用大量内存的v8。尝试使用更小,更具体的Web应用使用来重现稳定的内存增长,以缩小范围。