Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.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 此堆快照保持器层次结构是否指示泄漏?_Javascript_Reactjs_Memory Leaks_Google Chrome Devtools_Material Ui - Fatal编程技术网

Javascript 此堆快照保持器层次结构是否指示泄漏?

Javascript 此堆快照保持器层次结构是否指示泄漏?,javascript,reactjs,memory-leaks,google-chrome-devtools,material-ui,Javascript,Reactjs,Memory Leaks,Google Chrome Devtools,Material Ui,我正在查看一个堆快照,我看到一个保持器层次结构,如下所示: 这是否意味着MuiThemeProviderOld(来自@material ui/corelib,以黄色突出显示)正在泄漏您在屏幕截图顶部看到的我的gui实例 或者它是什么意思?是的。我们在全局名称空间中注入了一些依赖项。但是,我们不知道您何时卸载最后一个material ui组件。WeakMaps是一个解决方案,但在IE11中不起作用。您知道有其他跨npm包的依赖注入解决方案吗 然而,这看起来像400MB的内存?这看起来不仅仅是代码

我正在查看一个堆快照,我看到一个保持器层次结构,如下所示:

这是否意味着
MuiThemeProviderOld
(来自
@material ui/core
lib,以黄色突出显示)正在泄漏您在屏幕截图顶部看到的我的
gui
实例


或者它是什么意思?

是的。我们在全局名称空间中注入了一些依赖项。但是,我们不知道您何时卸载最后一个material ui组件。WeakMaps是一个解决方案,但在IE11中不起作用。您知道有其他跨npm包的依赖注入解决方案吗

然而,这看起来像400MB的内存?这看起来不仅仅是代码。你有复印件吗

如果应用程序的每个部分都不使用material ui,则这是一次泄漏。但在使用材质ui和不使用材质ui的路由之间进行切换不会增加内存消耗


这将在v4中删除。这只是一个临时解决办法。

我正在将包含数百万个点的激光雷达点云的地图分幅加载到3D WebGL应用程序中,这样可以解释保留的大尺寸。我敢打赌,一旦我解决了漏洞,这种情况就会消失。关于WeakMaps,我是Chrome的,所以应该没有问题吧?core js WeakMap polyfill不会泄漏,可在IE11中工作。关于了解我们何时卸载material ui组件,您不能跟踪在
组件中将卸载组件的
,或
with styles
HOC吗?关于核心js WeakMap polyfill的旁注:它会创建一个随机UUID,然后使用与polyfilled WeakMap实例关联的UUID键设置要存储在对象本身上的值,并使该键不可枚举。然后,当对象是GC'd时,它会带上WeakMap内容(因为内容存储在对象本身上,而不是“WeakMap”对象中,所以可以收集)。下面是查看无泄漏polyfill的面包屑:-->-->我需要查看代码。如果您没有从材质ui代码中导航出一些路由,那么我的原始语句与此无关。我不知道你为什么认为我说WeakMap漏水?我说这将是我描述的那个具体问题的解决方案。但这和你的无关,我误解了。我确实在保留列表中看到了一个“WeakMap”,它最终保留了knownClassComponents,但正如您所看到的,knownClassComponents没有突出显示为黄色,因此没有从JS中引用它,因此,因为它位于一个也没有突出显示为黄色的WeakMap中,所以不应该收集整个WeakMap(以及它保留的所有内容)吗?也许我不是100%肯定我知道如何阅读屏幕截图中的信息。