【问题标题】:Angular2 memory leak on long running subscription长期订阅的Angular2内存泄漏
【发布时间】:2016-11-25 10:08:22
【问题描述】:

我有一个 Ng2 应用程序,它订阅了许多通过 SignalR 推送给它的服务器事件。 应用程序需要持续运行。

我正在使用 Ng2 发射器来监听事件。只有一个页面监听这些事件并向用户显示数据。

我遇到的问题是,如果我让应用程序在第二天通宵运行,我会在 Chrome 中看到内存不足的消息。

我无法销毁订阅,因为应用需要持续运行。管理这些订阅的最佳方式是什么?

我的订阅是在组件构造函数中设置的。我正在像这样订阅我的组件...

 this._ytdReturnsService.getDataForGrid().subscribe((data: any) => {
            this.lastUpdateTime = new Date();
            this.rows = data.rows;
            this.cols = data.cols;
        });

我的服务发出这样的数据...

this.proxy.on('getFundReturns', (data: any) => {
    var obj = JSON.parse(data);
    //console.log("getFundReturns:");
    //console.log(obj);
    this.onGetFundReturnsDataRecieved.emit(obj);
});

【问题讨论】:

  • 很难说没有复制,尤其是没有看到代码。
  • 我添加了一些代码sn-ps。还有哪些部分会有所帮助?
  • 您是否使用浏览器 devtools profiler 调查过究竟是什么占用了内存?
  • 还没有,明天一夜之间又失败了,我必须这样做。
  • 我看到了这个问题,但我不知道。

标签: angular


【解决方案1】:

在分解我的代码并进行研究后,我发现问题是由我们使用的名为 PrimeNG 的第三方组件引起的。 制造商已经解决了这个问题......

https://github.com/primefaces/primeng/issues/488

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-24
    • 2019-06-12
    • 2011-12-12
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    相关资源
    最近更新 更多