我们的SPA是使用.NET构建的,它的客户端绑定使用了knockoutJS。我们在初始页面加载时绑定所有数据,并在页面重新加载时遇到内存泄漏。我想知道如何正确地处理嵌套的敲除可观察性,以避免内存泄漏。我试过了
$(window).bind('beforeunload', function () {
ko.cleanNode(ko.vm)
});(ko.vm是我们的根视图模型),但是仍然存在巨大的内存泄漏。是否需要在页面卸载时单独发布每个subOberservable?下一步是懒散地将数据绑定到view..but,任何knockoutJS内存管理实践都将受到极大的赞赏。
发布于 2013-06-07 13:15:48
如果您正在刷新页面,那么浏览器应该会释放任何内存。如果有内存泄漏,那么它就是浏览器中的一个bug。你看到这种行为的浏览器是什么?你怎么知道有内存泄漏?
但是,如果您不是真正刷新页面,而是只是删除DOM元素并用新元素替换它们并重新绑定,那么您确实需要小心。
一般来说,确保你..。
someKoObject.subscribe(),则对subscribe的返回值调用dispose以释放订阅)。在许多情况下,这一切都会为您清理,您不需要这样做。但是,如果可观察的时间比观察者长,如果你不取消订阅,那么观察者就会被保存在记忆中。如果您理解差异,那么您只能跟踪和处理您知道的订阅将是一个问题。
如果您发布了一些您认为是泄漏的实际代码,在什么条件下,那么可以给出更具体的建议。
https://stackoverflow.com/questions/16975641
复制相似问题