gpt4 book ai didi

memory-leaks - KnockoutJS 内存泄漏

转载 作者:行者123 更新时间:2023-12-03 23:51:11 26 4
gpt4 key购买 nike

我相当肯定我在使用 KO 2.0 版时会出现内存泄漏。我有一个可观察的数组,其中填充了 AJAX 调用的结果。此集合与每个 DIV 容器的数据绑定(bind)。数组中的每个对象都有一个绑定(bind)到复选框的可观察值。我已经使用 Chrome 检查了堆,我的结论如下:

如果 AJAX 调用返回 3 个元素,它们会在 DOM 上正确呈现。如果我此时对堆进行快照,则有三个 SearchResult里面的物体。如果我再次触发 AJAX 调用并返回 5 个元素,则所有 5 个元素都会正确呈现到 DOM。但是,如果我在 Chrome 中对堆进行快照并进行比较,则会发现 8 个元素仍处于堆中,所有元素都被列为“添加”,没有一个元素被列为“已删除”。 DOM 显示总是正确的,但内存使用量只是不断攀升,因为旧的搜索结果永远不会被释放。

任何人都可以帮助我或给我一些诊断内存泄漏的指示吗?

更新

我创建了一个 jsFiddle显示我正在做的事情的要点。除了核心功能之外,我已经剥离了所有内容,并且在本地计算机上运行时仍然可以复制内存泄漏。显然,代码在发布时无法正常工作,因为它需要访问我的本地服务器才能运行搜索。

更新 2

我拉了最新的 2.1.0.0 Beta 版本,泄漏消失了。我不是使用 beta 版本的东西或经典的“只是升级到新版本”修复的忠实粉丝。我仍然很想知道发生了什么变化或我做错了什么导致了泄漏。

最佳答案

你没有做错什么,它看起来像 ko.cleanNode忽略了 foreach绑定(bind)和未正确处理更新后的 observableArray 中的过时对象.

https://github.com/SteveSanderson/knockout/issues/271

这已在 2.1.0beta 中修复

关于memory-leaks - KnockoutJS 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9853850/

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