异步代码会导致内存泄漏吗?
Does asynchronous code cause memory leaks?
我担心异步操作是否容易发生内存泄漏。我的上下文是 Javascript 在前端和后端都使用 (node.js)
在 execute
操作中,创建了一个委托 IResponder
。它具有对主模块的引用,以及 success
和 fault
方法。
exampleModule
执行asyncOperation
并调用IResponder
的result
或fault
方法。
我的问题是:我希望 exampleModule 在主例程结束时被释放,因为我看到有一些循环引用正在进行闭包等。请告知或确认。
execute: function() {
var self = this;
function IResponder() {
this.result = function(data) {self.result(data)};
this.fault = function(info) {self.fault(info)};
}
var exampleModule = new ExampleModule();
exampleModule.asyncOperation(new IResponder());//calls back result or fault of IResponder
},
success: function(data) { //is exampleModule deallocated here?
},
fault: function(info) { // //is exampleModule deallocated here?
}
循环引用永远不会给 JavaScript 垃圾收集器带来问题。
在这种情况下,您的对象何时成为符合条件的重新分配取决于 ExampleModule
何时释放其对您的 IResponder
的引用。
我担心异步操作是否容易发生内存泄漏。我的上下文是 Javascript 在前端和后端都使用 (node.js)
在 execute
操作中,创建了一个委托 IResponder
。它具有对主模块的引用,以及 success
和 fault
方法。
exampleModule
执行asyncOperation
并调用IResponder
的result
或fault
方法。
我的问题是:我希望 exampleModule 在主例程结束时被释放,因为我看到有一些循环引用正在进行闭包等。请告知或确认。
execute: function() {
var self = this;
function IResponder() {
this.result = function(data) {self.result(data)};
this.fault = function(info) {self.fault(info)};
}
var exampleModule = new ExampleModule();
exampleModule.asyncOperation(new IResponder());//calls back result or fault of IResponder
},
success: function(data) { //is exampleModule deallocated here?
},
fault: function(info) { // //is exampleModule deallocated here?
}
循环引用永远不会给 JavaScript 垃圾收集器带来问题。
在这种情况下,您的对象何时成为符合条件的重新分配取决于 ExampleModule
何时释放其对您的 IResponder
的引用。