首页 > 解决方案 > 运行数小时时浏览器中应用程序的内存增量

问题描述

我被我的应用程序的内存增量卡住了,因为它是单页,我什至无法重新加载它。在运行我的应用程序大约 5-6 小时后,内存大小从初始加载达到大约 600mb,即 120mb,我们为此做了一些修复,比如在 componentWillunMount() 中将 ref 设置为 null,并且在相同的测试后内存减少到 400mb同时,但我仍然可以看到有很多分离的元素,肯定是由代码的其他部分引起的,在我们可以从 chrome 内置功能中获取的快照文件中。那么有什么方法可以在离开特定页面的同时删除所有分离元素,或者为什么浏览器不将其从内存中删除,因为分离元素保留了一定大小的内存?

标签: reactjsmemorybrowserrefsreact-lifecycle

解决方案


仅当页面的 DOM 树或 JavaScript 代码中没有对 DOM 节点的引用时,才能对 DOM 节点进行垃圾回收。

我建议你看看你的代码,看看是否有函数在你想要的时候运行。如果你使用 react 或类似的框架,你必须小心它们的生命周期(很重要!)。

同样在这里https://developers.google.com/web/tools/chrome-devtools/memory-problems/ 有很多有用的信息,比如 - Investigate memory allocation by function - 发现频繁的垃圾回收

那么有什么方法可以在离开特定页面时删除所有分离的元素,或者为什么浏览器不从内存中删除它

如果我们拥有的是I use javascript信息,我无法提供任何更准确的假设或建议。无数库、堆栈和技术组合的无数后果使这一点无法猜测。


推荐阅读