当你订阅可观察
时会发生什么,那么这个可观察的源代码不再在应用程序中使用?有内存泄漏吗?我有FormArray
其中有一些FormGroup
。我订阅了每个FormGroup. value eChange
,当FormGroup
从FormArray
中删除时,我需要tu取消订阅吗?主题
也是如此,如果由于某种原因我将主题
在例如组件
中并且这个组件将被销毁,我需要取消订阅它们吗?我已经阅读了这个答案Angular/RxJs我什么时候应该取消订阅,但没有关于我的案例。
我想说没有必要取消订阅。如果你这样做不会有任何坏处,但我认为没有必要。
你可以在这个答案中找到更详细的解释。
但要点是这样的:在这种情况下,当从订阅
的回调创建的订阅者仍然是主题
的订阅者列表的一部分时,就会发生内存泄漏。这意味着当再次创建组件时,该类型的另一个订阅者将被添加到列表中,而旧的订阅者仍然存在。这就是内存泄漏发生的原因。
但是,如果您取消订阅,该订阅者将不再是该订阅者列表的一部分。我说在这种情况下不需要取消订阅的原因是,唯一仍然引用该订阅者的东西,即主题
实例,它可以防止旧订阅者被垃圾回收,将被清空。我的推理是:如果保持该订阅者存活的东西被清空,那么订阅者的下一个回调就不可能再次被访问,因此它可以被垃圾回收。