Angular 为什么不';t FormControl#值更改#x27;垃圾回收?

Angular 为什么不';t FormControl#值更改#x27;垃圾回收?,angular,memory-leaks,rxjs,observable,angular-reactive-forms,Angular,Memory Leaks,Rxjs,Observable,Angular Reactive Forms,我已经读过很多帖子,说人们需要取消订阅FormControl#valueChanges,以防止内存泄漏。我理解从Observables退订的“时间”和“方式”。据我所知,产生无穷多个值的可观测值需要取消订阅,FormControl#valueChanges就是这样一种可观测值 但我的问题是,为什么这些可观察对象不被垃圾收集?我的意思是当一个角度分量被破坏时,参考是完全正确的?模板中的表单控件不再存在。FormControl实例也消失了。因此,如果可观察的的“源”,即表单控件,消失了,那么它的成员

我已经读过很多帖子,说人们需要取消订阅
FormControl#valueChanges
,以防止内存泄漏。我理解从
Observable
s退订的“时间”和“方式”。据我所知,产生无穷多个值的可观测值需要取消订阅,
FormControl#valueChanges
就是这样一种
可观测值


但我的问题是,为什么这些
可观察对象不被垃圾收集?我的意思是当一个角度分量被破坏时,参考是完全正确的?模板中的表单控件不再存在。
FormControl
实例也消失了。因此,如果
可观察的
的“源”
,即
表单控件
,消失了,那么它的成员
值更改
为什么仍然存在并保留其订阅?

好的,所以我在Chrome开发工具中使用内存分析器进行了一些实验。我发现,无论是取消订阅
FormControl#valueChanges
还是组件被销毁,结果几乎是一样的。在这两种情况下,一个
SubjectSubscription
会被垃圾回收。看看下面的结果


当组件被破坏时

手动取消订阅时

因此,我认为可以肯定地说,事实上,订阅确实会被删除,用户不需要手动取消订阅