我们知道 node .js为我们提供了强大的力量,但强大的力量带来了巨大的责任.
据我所知,V8引擎不做任何垃圾收集.那么,为了确保我的 node 服务器没有内存泄漏,我们应该避免哪些最常见的错误呢.
EDIT:
我们知道 node .js为我们提供了强大的力量,但强大的力量带来了巨大的责任.
据我所知,V8引擎不做任何垃圾收集.那么,为了确保我的 node 服务器没有内存泄漏,我们应该避免哪些最常见的错误呢.
EDIT:
据我所知,V8引擎没有
V8内置了一个强大而智能的垃圾收集器.
您的主要问题是不理解闭包如何维护对外部函数的范围和上下文的引用.这意味着有多种方法可以创建循环引用,或者创建只需清理not个变量的变量.
这是因为你的代码是ambigious,而编译器无法判断它是否是safe来进行垃圾收集.
强制GC获取数据的一种方法是将变量设置为null.
function(foo, cb) {
var bigObject = new BigObject();
doFoo(foo).on("change", function(e) {
if (e.type === bigObject.type) {
cb();
// bigObject = null;
}
});
}
v8如何知道在事件处理程序中对大对象进行垃圾收集是否安全?但事实并非如此,所以您需要通过将变量设置为null来告诉它它不再被使用.
要阅读的各种文章: