Tuh*_*kar 6 memory-leaks observable rxjs angular angular-reactive-forms
我已经浏览过很多线程,说需要取消订阅FormControl#valueChanges以防止内存泄漏。我了解“何时”和“如何”取消订阅Observables。据我了解,产生无限数量值的 Observables 需要取消订阅,这FormControl#valueChanges就是其中之一Observable。
Observables但我的问题是,为什么这些垃圾没有被收集?我的意思是,当 Angular 组件被破坏时,引用就消失了,对吧?模板中的表单控件不再存在。实例FormControl也消失了。Observable因此,如果、 、的“源”FormControl消失了,那么它的成员为何valueChanges仍然存在并保留其订阅呢?
好的,我使用 Chrome 开发工具中的内存分析器进行了一些实验。我发现,无论您取消订阅FormControl#valueChanges还是组件被破坏,结果几乎是相同的。在这两种情况下,SubjectSubscription垃圾都会被收集。看看下面的结果。
因此,我认为可以肯定地说,订阅实际上已被删除,并且不需要手动取消订阅。