javascript - 异步代码会导致内存泄漏吗?

标签 javascript node.js memory-leaks

我担心异步操作是否容易出现内存泄漏。我的上下文是前端和后端都使用的 Javascript (node.js)

execute操作中,创建了一个委托(delegate)IResponder。它包含对主模块的引用,以及 successfault 方法。

exampleModule 执行 asyncOperation 并调用 IResponder 的 resultfault 方法

我的问题是:我希望 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 - 异步代码会导致内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30222576/

相关文章:

javascript - 设置最短时间和超时

sql-server - 分离批量运行的多个SQL Server语句

java - Android ListView 与 SimpleAdapter 泄漏内存

Java 3D 内存泄漏

javascript - 带有 Firefox(最新 32 位)浏览器的 Protractor 未加载

javascript - 使用 jquery ajax 在 window.location 重定向后在下一页的 div 中写入 html 文本

javascript - 使用 selenium 抓取 Tripadvisor 时如何单击 "More"按钮?

javascript - MONGO_URL 用于在一台服务器上运行多个 Meteor 应用程序

javascript - 对数组中的所有值运行查找查询

swift - 解析日期需要大量的 RAM