我正在尝试了解如何避免 AngularJS 中的内存泄漏。似乎几乎没有关于要清理什么的文档,如果垃圾收集是完美且无所不知的话,这就像人们所期望的那样。但是,我的阅读表明很容易留下阻止垃圾收集的绑定(bind) DOM 元素,这 StackOverflow answer说我们必须手动取消绑定(bind)指令中设置的任何绑定(bind),并且规模较小,clean up $timeouts as well .我遇到了this article ,它指示我寻找“分离的”DOM 元素。
仅使用 sample $modal code from the AngularJS UI site ,我在打开和关闭模态对话框后发现了许多相当大的分离元素。它似乎不会随着重复点击而增长,但如果我有很多对话,每个对话似乎都会永远留下它的足迹。我尝试在关闭后设置 modalInstance = null
,但这没有完成任何事情。
分离元素真的不好吗?如果是这样,应该如何AngularJS UI sample modal code进行修改以消除这些?
更重要的是,在使用 AngularJS 时,是否有任何简单明了的说明专门清理哪些内容?很高兴他们提供了一个 $on.$destroy 函数,但我找不到任何明确的说明来说明我负责清理什么,或者如何清理。
最佳答案
恐怕分离元素是更复杂的问题,会导致不受控制的内存泄漏。我研究了一种为我解决这个问题的方法。那就是可以通过自定义 $modal 工厂更改 native ui.bootstrap 模态行为,从而防止破坏和重新实例化对话框。所以 $modal 对话框变成了单例。
我已经在 github 上分享了我对这个解决方案的尝试:https://github.com/dhilt/angular-bootstrap-modal-singleton .我在我从事的项目中使用它。
关于javascript - 官方 AngularJS UI Bootstrap $modal 示例中的内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26414131/