arb*_*arb 13 memory-leaks knockout.js
我很确定我使用KO 2.0版本有内存泄漏.我有一个可观察的数组,其中填充了AJAX调用的结果.此集合是数据绑定的,每个集合都有一个DIV容器.数组中的每个对象都有一个绑定到复选框的可观察值.我已经使用Chrome检查了堆,我的结论如下:
如果AJAX调用返回3个元素,则它们在DOM上正确呈现.如果我此时拍摄堆的快照,那里有三个SearchResult对象.如果我再次触发AJAX调用并返回5个元素,则所有5个元素都正确呈现给DOM.但是,如果我在Chrome中拍摄堆的快照并对它们进行比较,则列出的8个元素仍在堆中,所有这些元素都被列为"已添加"而没有列为"已删除".DOM显示始终是正确的,但内存使用只是保持攀爬和攀爬,因为旧的搜索结果永远不会被释放.
任何人都可以帮助我或指出诊断内存泄漏的指针吗?
UPDATE
我已经创建了一个jsFiddle来展示我正在做的事情的要点.我已经把一切都划分了但核心功能,我仍然可以在我的本地机器上运行时复制内存泄漏.显然代码将无法发布,因为它需要命中我的本地服务器来运行搜索.
更新2
我推出了最新的2.1.0.0 Beta版本,泄漏消失了.我不是使用测试版的东西或经典的"只是升级到新版本"修复程序的忠实粉丝.我仍然非常有兴趣知道发生了什么改变或者我做错了什么造成了泄漏.
Kod*_*hor 10
你没有做错任何事情,它似乎ko.cleanNode忽略了foreach绑定并且没有在更新的内部正确处理过时的对象observableArray.
https://github.com/SteveSanderson/knockout/issues/271
这已在2.1.0beta中修复
| 归档时间: |
|
| 查看次数: |
5613 次 |
| 最近记录: |