Javascript Jaydata敲除内存泄漏

Javascript Jaydata敲除内存泄漏,javascript,knockout.js,memory-leaks,garbage-collection,jaydata,Javascript,Knockout.js,Memory Leaks,Garbage Collection,Jaydata,我在用jaydata编写的SPA上遇到了内存泄漏问题,还有敲除插件 在我的应用程序中,顺序是: var x=(加载jaydata对象) var obs=x.asKoObservable() (在给定viewModel上使用obs以在UI中使用它) 处理与ko.computed()和手动ko订阅相关的所有内容(使用subs.dispose()) 铬上的强制GC 在Chrome上拍摄“堆快照” 这里是看到原始的“obs”在GC后仍然存在。。。而罪魁祸首似乎是引用“obs”的“koProperty”

我在用jaydata编写的SPA上遇到了内存泄漏问题,还有敲除插件

在我的应用程序中,顺序是:

  • var x=(加载jaydata对象)
  • var obs=x.asKoObservable()
  • (在给定viewModel上使用obs以在UI中使用它)
  • 处理与ko.computed()和手动ko订阅相关的所有内容(使用subs.dispose())
  • 铬上的强制GC
  • 在Chrome上拍摄“堆快照”
  • 这里是看到原始的“obs”在GC后仍然存在。。。而罪魁祸首似乎是引用“obs”的“koProperty”

    给定的koProperty是在jaydata的ko插件的knockout.js:48上定义的

    同样在第50行之后,koProperty有一个手动订阅。。。我没有在插件上下文中存储或处理


    有人能证实这一点吗?如果是的话。。。有虫子吗?导致内存泄漏的原因是什么?

    您是否在“开发工具”设置中启用了高级堆快照属性?我们发现,由于V8优化,Chrome使内容保持活动状态,但只有在看到高级快照的情况下才能发现。我发现koProperty缺少var关键字,这使得它成为一个全局变量,然后保存此处定义的最后一个可观察对象的引用