gpt4 book ai didi

angular - 为什么不收集 FormControl#valueChanges 的订阅垃圾?

转载 作者:行者123 更新时间:2023-12-03 21:20:24 26 4
gpt4 key购买 nike

我已经浏览了很多线程说需要取消订阅 FormControl#valueChanges以防止内存泄漏。我了解取消订阅的“何时”和“如何”Observable s。据我了解,产生无限数量值的 Observable 需要取消订阅和 FormControl#valueChanges就是这样一种Observable .

但我的问题是,为什么不是这些 Observables垃圾收集?我的意思是当一个 Angular 组件被销毁时,引用就死了,对吗?模板中的表单控件不再存在。 FormControl实例也不见了。所以如果Observable的“来源” , FormControl , 没了那它的成员怎么来了valueChanges仍然存在并保留其订阅?

最佳答案

好的,所以我使用 Chrome Dev Tools 中的 Memory Profiler 进行了一些实验。我发现的是,您是否取消订阅 FormControl#valueChanges或者组件被破坏,结果几乎相同。在这两种情况下,一个 SubjectSubscription收集垃圾。看看下面的结果。

当组件被销毁时

List of some deleted objects when component got destroyed

手动取消订阅时

List of some deleted objects when Observable was unsubscribed

所以我认为可以肯定地说订阅实际上被删除了,不需要手动取消订阅。

关于angular - 为什么不收集 FormControl#valueChanges 的订阅垃圾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51858832/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com