4

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

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

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

4

1 回答 1

4

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

我们通过将取消注册绑定到集合的remove事件解决了这个问题。如果有效果,那么模型只有在它们是集合的一部分时才具有关系。从集合中删除模型后,将其丢弃。这可能适合您,也可能不适合您,具体取决于您的应用程序的架构。

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

于 2012-12-14T13:11:36.213 回答