如何在 DevTools 中检查垃圾 Observables?

use*_*686 7 memory-leaks devtools rxjs angular

为了避免内存泄漏,我如何专门检查 Angular 应用程序是否存在垃圾 Observable(那些尚未取消订阅的对象)?

ols*_*lsn 7

我认为这是不可能的——这样的机制需要所有 Observable 的中央存储——这反过来又会带来内存泄漏的巨大风险。

建议#1

尝试在您的项目中搜索所有用途.subscribe,然后检查每个结果是否包含在某个时刻取消订阅的机制。任何手册都.subscribe应该有某种取消订阅的机制。

建议#2

使用 DevTools 随着时间的推移创建内存/堆快照,如果内存和对象计数都没有随着时间的推移而增加,那么在使用应用程序时,您可以相当确定内存泄漏不是您的应用程序的问题。我不会在这里详细介绍如何使用 DevTools,因为这“稍微”超出了范围,但请查看此链接(对于 Chrome DevTools):https://developers.google.com/ web/tools/chrome-devtools/memory-problems/ (如果链接随时不可用,只需谷歌“如何使用 chrome 开发者工具堆快照”)

  • 您可能希望将此链接与您的建议#1 一起包含在内:http://medium.com/@benlesh/rxjs-dont-unsubscribe-6753ed4fda87 (2认同)