例如,以下内容
注意:毕竟树的afterSubMenuRender部分扩展到 bound_this函数native_bind()@ 686283
有问题的代码在
之下ContextMenuItem = function(mConfiguration)
{
...
this.afterSubMenuRender = this.afterSubMenuRender.bind(this);
如果我用
替换它没有任何区别this.afterSubMenuRender = this._afterSubMenuRender.bind(this);
该方法是从knockout引用的,但是我在应用程序周围看到了大量对象,包括那些从knockout引用的或刚刚绑定到jquery事件或自定义事件的对象。在所有情况下,这些都被处置。我也发现并修复了大量内存泄漏,但下面的内容似乎没有消失。
我可以忽略它(因为它是一个独立的树吗?)或者它是否有一个看不见的保留树,我在devtools中看不到或者我还能做其他分析吗?
答案 0 :(得分:1)
您使用的是什么版本的Chrome?
寻找内存泄漏的最佳方法是使用Record Heap Allocations配置文件类型。 它不断扫描堆中的新对象,并将它们显示为蓝色条。 如果你重复一个场景次数,那么每次迭代都会留下一个蓝色条 很有可能存在泄漏。您应该停止录制并在概览窗口中选择一个栏。执行此操作时,探查器将过滤掉当时未分配的所有对象。因此,您唯一需要了解的是对象保留这些泄漏的对象。在大多数情况下,至少有一条从根到物体的路径使它们保持活力。
如上所述here甚至DevTools控制台也可以是一个保留器。 在您的情况下,我建议在DevTools设置面板中启用“显示高级堆快照属性”复选框。