gpt4 book ai didi

javascript - Angular 的 $compile 内存泄漏?

转载 作者:可可西里 更新时间:2023-11-01 01:26:13 26 4
gpt4 key购买 nike

总结

为什么每次 $compile 运行时以下 plunkr 都会导致内存泄漏?

http://plnkr.co/edit/HhB4croPKuN5TP2NPqq6

代码解释

我正在编写一个有时需要完全重新呈现其 HTML 的指令。它通过将其模板生成为字符串,然后将该字符串提供给 $compile,最后使用 jQuery 删除旧 DOM 并将其替换为新呈现的元素来实现这一点。

每次执行此操作时,应用程序都会泄漏几兆字节的内存,通常会使浏览器崩溃。 Chrome 堆快照显示每次都会添加分离的 DOM 元素树,但由于某种原因,Plunkr 没有这个问题(尽管它仍然泄漏很多)。

我做错了什么导致内存泄漏?

“什么?生成字符串模板并重新编译它?为什么?”

我知道,这显然不是 Angular 指令的编写方式。我的第一种方法是将 ng-repeats 与其他双向绑定(bind)相结合。不幸的是,随着作用域上 $watch-statements 数量的增加,这会导致性能问题。关于为什么我选择这种方法的一些推理,我在这里给出一个小的咆哮:How does data binding work in AngularJS?

编辑

我一直在研究 plunk,它不再泄漏内存。我会保留这个问题,以防其他人发现它作为重新编译 DOM 的无泄漏方法很有用。

最佳答案

亲自回答以确保它不会出现在“未回答”下。我一直在努力,它不再泄漏内存。我会保留这个问题,以防其他人发现它作为重新编译 DOM 的无泄漏方法很有用。

关于javascript - Angular 的 $compile 内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19092000/

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