gpt4 book ai didi

memory-leaks - 使用复杂模型结构时何时调用 Backbone.Relational.store.unregister()

转载 作者:行者123 更新时间:2023-12-02 17:47:36 38 4
gpt4 key购买 nike

我有一个使用 Backbone Relation 构建的应用程序,它疯狂地泄漏内存。据我了解,这是因为我从未在我的模型上调用 Backbone.Relational.store.unregister() ,导致它们永远保留在存储中。

数据模型相当深,有许多相互关联的类,并且我或多或少地不断获取与不断变化的过滤器匹配的模型树。然而,各个模型的所有权尚不清楚,因为除了最初获取它们的部分之外,它们也可能被应用程序的其他部分使用。

我应该什么时候取消注册模型?阅读 Backbone Relational 的源代码后,我可以看到 unregister() 在“销毁”时被调用,但由于我从不删除模型,所以这是不行的。

最佳答案

您可能应该多描述一下您的设置。您一般如何管理和访问您的模型?您有应用程序范围的单例集合吗?

我们通过将取消注册绑定(bind)到集合的 remove 事件来解决此问题。如果有效的话,那么模型只有在成为集合的一部分时才具有相关性。当模型从集合中移除后,它就被丢弃了。这可能适合你,也可能不适合你,具体取决于你的应用程序的体系结构。

旁注:我已经放弃了 Backbone.Relational,因为根据我的经验,它非常危险。当你开始使用它时,它就像一个魅力,但很容易朝自己的脸开枪。就像你看起来的那样。而且由于它的设计鼓励您将其与应用程序代码的各个方面紧密结合,因此摆脱它可能非常困难。

关于memory-leaks - 使用复杂模型结构时何时调用 Backbone.Relational.store.unregister(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11306598/

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