gpt4 book ai didi

jquery - KnockoutJS 内存释放

转载 作者:行者123 更新时间:2023-12-01 04:13:45 25 4
gpt4 key购买 nike

我们的 SPA 是使用 .NET 构建的,并使用 knockoutJS 进行客户端绑定(bind)。我们在初始页面加载时绑定(bind)所有数据,并且在页面重新加载时遇到内存泄漏。我想知道处理嵌套 knockout 可观察值以避免内存泄漏的正确方法。我已经尝试过

    $(window).bind('beforeunload', function () {
ko.cleanNode(ko.vm)

});

(ko.vm 是我们的 Root View 模型)但仍然存在巨大的内存泄漏。我们需要在页面卸载时单独释放每个 subOberservable 吗?我们的下一步是将我们的数据惰性绑定(bind)到 View ..但是任何knockoutJS内存管理实践将不胜感激。

最佳答案

如果您正在刷新页面,那么浏览器应该释放所有内存。如果存在内存泄漏,那么它就是浏览器中的错误。您在什么浏览器中看到此行为?你怎么知道有内存泄漏?

但是,如果您并不是真正刷新页面,而是只是删除 DOM 元素并用新元素替换它们并重新绑定(bind),那么您确实需要小心。

一般来说,请确保您...

  • 释放任何订阅(如果您调用了 someKoObject.subscribe(),则对 subscribe 的返回值调用 dispose 以释放订阅订阅)。
  • 丢弃您创建的任何 ko.compulated 对象(因为它们在内部订阅事物)。

在许多情况下,这一切都会为您清理干净,您不需要这样做。但是,在可观察对象比观察者生命周期长的情况下,如果您不取消订阅,则观察者将保留在内存中。如果您了解其中的差异,那么您只能跟踪并处置您知道会出现问题的订阅。

如果您发布了一些您认为泄漏的实际代码以及在什么条件下泄漏的内容,那么可以给出更具体的建议。

关于jquery - KnockoutJS 内存释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16975641/

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