首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KnockoutJS内存释放

KnockoutJS内存释放
EN

Stack Overflow用户
提问于 2013-06-07 03:09:05
回答 1查看 969关注 0票数 2

我们的SPA是使用.NET构建的,它的客户端绑定使用了knockoutJS。我们在初始页面加载时绑定所有数据,并在页面重新加载时遇到内存泄漏。我想知道如何正确地处理嵌套的敲除可观察性,以避免内存泄漏。我试过了

代码语言:javascript
复制
    $(window).bind('beforeunload', function () {
    ko.cleanNode(ko.vm)

});

(ko.vm是我们的根视图模型),但是仍然存在巨大的内存泄漏。是否需要在页面卸载时单独发布每个subOberservable?下一步是懒散地将数据绑定到view..but,任何knockoutJS内存管理实践都将受到极大的赞赏。

EN

回答 1

Stack Overflow用户

发布于 2013-06-07 13:15:48

如果您正在刷新页面,那么浏览器应该会释放任何内存。如果有内存泄漏,那么它就是浏览器中的一个bug。你看到这种行为的浏览器是什么?你怎么知道有内存泄漏?

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

一般来说,确保你..。

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

在许多情况下,这一切都会为您清理,您不需要这样做。但是,如果可观察的时间比观察者长,如果你不取消订阅,那么观察者就会被保存在记忆中。如果您理解差异,那么您只能跟踪和处理您知道的订阅将是一个问题。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16975641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档