Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在ChromeDevToolsProfiler中,递归保留树是什么意思_Javascript_Memory Leaks_Google Chrome Devtools - Fatal编程技术网

Javascript 在ChromeDevToolsProfiler中,递归保留树是什么意思

Javascript 在ChromeDevToolsProfiler中,递归保留树是什么意思,javascript,memory-leaks,google-chrome-devtools,Javascript,Memory Leaks,Google Chrome Devtools,作为一个例子,下面是 注意:树的AfterSubmenuer后面的部分全部展开为 在本机函数\u bind()中绑定此函数@686283 下面是有问题的代码 ContextMenuItem = function(mConfiguration) { ... this.afterSubMenuRender = this.afterSubMenuRender.bind(this); 如果我换成你,也没什么区别 this.afterSubMenuRender = this._

作为一个例子,下面是

注意:树的AfterSubmenuer后面的部分全部展开为 在本机函数\u bind()中绑定此函数@686283

下面是有问题的代码

ContextMenuItem = function(mConfiguration)
{
        ...
    this.afterSubMenuRender = this.afterSubMenuRender.bind(this);
如果我换成你,也没什么区别

this.afterSubMenuRender = this._afterSubMenuRender.bind(this);
该方法是从knockout引用的,但我在应用程序周围的大量对象上看到了下面的内容,包括从knockout引用的对象或仅绑定到jquery事件或自定义事件的对象。在所有情况下,都会处理这些问题。我还发现并修复了大量内存泄漏,但像下面这样的泄漏似乎不会消失


我可以忽略它吗(因为它是一个分离的树?),或者它有一个在devtools中看不到的不可见的保留树,或者我可以做一些其他的分析吗?

你使用的是什么版本的Chrome

查找内存泄漏的最佳方法是使用记录堆分配配置文件类型。 它连续扫描堆中的新对象,并将它们显示为蓝色条。 如果您多次重复一个场景,并且每次迭代都会留下一个蓝色条,那么 很有可能发生泄漏。您应该停止录制并在概览窗口中选择一个栏。执行此操作时,探查器将过滤掉当时未分配的所有对象。因此,您只需要了解哪些对象保留了这些泄漏的对象。在大多数情况下,从根到对象至少有一条路径使它们保持活动

如上所述,即使DevTools控制台也可以是固定器。
在您的情况下,我建议在DevTools设置面板中启用“显示高级堆快照属性”复选框。

谢谢,我没有意识到有一个选项,我会试试。那“显示高级堆快照属性”是一个救命稻草