gpt4 book ai didi

javascript - 如何检测 Angular 应用程序中与 rxjs 相关的内存泄漏

转载 作者:太空狗 更新时间:2023-10-29 16:55:17 29 4
gpt4 key购买 nike

是否有任何工具或技术可以检测“遗留”或“当前活跃”的可观察对象、订阅。

最近刚刚发现了一个非常严重的内存泄漏,其中组件由于缺少“取消订阅”调用而保持事件状态。我读到了“takeUntil”方法,它看起来很不错。 https://stackoverflow.com/a/41177163/2050306

但是我仍然想知道是否有任何工具(浏览器扩展等)。据我所知,Augury 不涵盖这个领域。

非常感谢所有输入。

最佳答案

免责声明:我是下面提到的工具的作者。

这可以通过保留添加新订阅的列表,并在取消订阅后从该列表中删除订阅来实现。

麻烦的部分是观察订阅。实现此目的的一种直接方法是通过猴子修补 Observable#subscribe() 方法,即替换 Observable 原型(prototype)方法。

这是observable-profiler的整体方法,一种开发工具,它连接到一个 Observable 库(即 rxjs)并在控制台中打印泄漏的订阅。

使用分析器的一种简单方法是在应用启动后开始跟踪,然后在一段时间后停止跟踪:

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { Observable } from 'rxjs';
import { setup, track, printSubscribers } from 'observable-profiler';

setup(Observable);
platformBrowserDynamic([])
.bootstrapModule(AppModule)
.then(ref => {
track();
window.stopProfiler = () => {
ref.destroy();
const subscribers = track(false);
printSubscribers({
subscribers,
});
}
});

一旦需要报告,只需在开发工具控制台中调用 stopProfiler()

关于javascript - 如何检测 Angular 应用程序中与 rxjs 相关的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54658614/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com