是否有任何工具或技术来检测"遗留"或"当前活动"的可观察对象、订阅.
最近发现了一个相当严重的内存泄漏,由于缺少"unsubscribe"调用,组件一直处于活动状态.我读过关于"takeUntil"的方法,这似乎很好.
然而,我仍然想知道是否有任何工具(浏览器扩展等)可以实现这一点.据我所知,占卜并不包括这一领域.
非常感谢您的所有意见.
是否有任何工具或技术来检测"遗留"或"当前活动"的可观察对象、订阅.
最近发现了一个相当严重的内存泄漏,由于缺少"unsubscribe"调用,组件一直处于活动状态.我读过关于"takeUntil"的方法,这似乎很好.
然而,我仍然想知道是否有任何工具(浏览器扩展等)可以实现这一点.据我所知,占卜并不包括这一领域.
非常感谢您的所有意见.
免责声明:我是下面提到的工具的作者.
这可以通过保留添加新订阅的列表,并在取消订阅后从列表中删除订阅来实现.
麻烦的部分是observing订阅.实现这一点的一个简单方法是用monkey修补Observable#subscribe()
方法,即替换Observable prototype方法.
这是observable-profiler的总体方法,这是一个开发工具,可以挂接到一个可观察的库(即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,
});
}
});
一旦你想要一份报告,只需在devtools控制台中调用stopProfiler()
即可.