【发布时间】:2013-11-10 04:27:02
【问题描述】:
在这个第一个示例中,我正在更新一个现有的 MongoDB 文档。 date: new Date()
会导致内存泄漏吗?如果不是,为什么? 我在某处读到,每当您使用 new 关键字分配新对象时,您必须自己解除分配。
var update = {
$inc: { wins: 1 },
$push: { pastMatches: { date: new Date, winner: winner, loser: loser } }
};
Character.update({ characterId: winner }, update);
在这个第二个示例中,我使用以下 Express.js 中间件进行错误记录。如果您每次在应用程序路由中出现错误时调用此代码,是否会导致内存泄漏? new Date() 是否会被垃圾收集?
app.use(function(err, req, res, next) {
console.error(new Date, err);
res.send(500);
});
谢谢!我正在尝试追踪我的应用程序中的内存泄漏,这些是一些让我印象深刻的示例。
【问题讨论】:
-
JavaScript 是一个垃圾收集运行时,所以不,您不必自己解除分配对象。但是,您必须避免“固定”它们。控制台机制本身将坐在这样传递的引用上并非不可能。你触发了多少错误?
Date实例不应该很大。 -
我在某处读到,每当你使用 new 关键字分配一个新对象时,你必须自己解除分配。 -> 你确定这是关于 JavaScript 而不是 C++?跨度>
-
为什么这些特定的代码行在候选中脱颖而出?如果您正在使用您建议的所有移动部件,那么还有数以万计的其他代码行正在执行。
-
还有——内存泄漏的本质是什么?你如何重现它?
-
我想可能在 gridfs-stream 实现中的某个地方存在错误,但如果没有对应用程序进行更深入的分析,我不想推测。您将需要针对应用程序的各个方面编写一些测试,以帮助您确定崩溃的根本原因。
标签: javascript node.js memory-leaks express