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

Memory leaks 使用复杂模型结构时何时调用Backbone.Relational.store.unregister(),memory-leaks,backbone.js,backbone-relational,Memory Leaks,Backbone.js,Backbone Relational,我有一个应用程序构建使用主干关系,这是泄漏内存疯狂。据我所知,这是因为我从未对我的模型调用Backbone.Relational.store.unregister(),导致它们永远保存在存储中 数据模型相当深入,有许多相互关联的类,我或多或少地不断获取与不断变化的过滤器匹配的模型树。然而,单个模型的所有权尚不清楚,因为它们可能也被应用程序的其他部分使用,而不是最初获取它们的部分 我应该什么时候注销模型?在阅读了主干关系数据库的源代码之后,我可以看到unregister()在“destroy”上被

我有一个应用程序构建使用主干关系,这是泄漏内存疯狂。据我所知,这是因为我从未对我的模型调用Backbone.Relational.store.unregister(),导致它们永远保存在存储中

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


我应该什么时候注销模型?在阅读了主干关系数据库的源代码之后,我可以看到unregister()在“destroy”上被调用,但由于我从未删除模型,所以这是不可能的。

您可能应该更详细地描述一下您的设置。您通常如何管理和访问您的模型?是否有应用程序范围的单例集合

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


旁注:我已经放弃了主干。关系型,因为根据我的经验,这是非常危险的。当你开始使用它时,它就像一个符咒,但很容易朝着线下的脸开枪。和你看起来一样多。而且,由于它的设计鼓励您将它与应用程序代码的各个方面紧密结合,因此要摆脱它可能非常困难

是的,我也放弃了脊梁骨。对于这个项目,我最终编写了自己的垃圾收集器,它允许保留模型,然后每隔一段时间检查一次模型对象图,以注销那些不在保留树中的模型。这简直太难看了,我不能推荐它。