提前感谢您的帮助。 当有循环引用时,Node.js console.log(util.inspect(ctx))将转出[Circular] e.g。
循环引用是否应该完全避免,如果这会导致堆栈溢出或内存问题?
如果我们有一个包含循环引用的循环,但我们在退出之前将对象设置为null 循环,不应该垃圾收集器清理存储,我们不应该有任何 内存不足或堆栈溢出问题后呢?
function run() {
var obj = {}, ctx = vm.createContext({});
obj.__ctx = ctx;
ctx.__obj = obj;
//console.log("before:"+util.inspect(obj));
//console.log("before:"+util.inspect(ctx));
vm.Script.runInContext('var x = +1;', ctx);
console.log(util.inspect(ctx));
console.log(util.inspect(obj));
ctx = null;
obj = null;
}
for (var i = 0; i < 10000; i += 1) {
run();
//sys.log(sys.inspect(process.memoryUsage()));
}
答案 0 :(得分:0)
除非您持有对函数范围之外的对象的引用,否则这不会导致内存问题。它的编写方式,只要它们被设置为null,它们就有资格进行垃圾收集。
console.log()方法只会产生循环错误,因为尝试将对象图写出来会导致无限循环,所以只需回复[Circular]