reactjs - 运行数小时时浏览器中应用程序的内存增量
问题描述
我被我的应用程序的内存增量卡住了,因为它是单页,我什至无法重新加载它。在运行我的应用程序大约 5-6 小时后,内存大小从初始加载达到大约 600mb,即 120mb,我们为此做了一些修复,比如在 componentWillunMount() 中将 ref 设置为 null,并且在相同的测试后内存减少到 400mb同时,但我仍然可以看到有很多分离的元素,肯定是由代码的其他部分引起的,在我们可以从 chrome 内置功能中获取的快照文件中。那么有什么方法可以在离开特定页面的同时删除所有分离元素,或者为什么浏览器不将其从内存中删除,因为分离元素保留了一定大小的内存?
解决方案
仅当页面的 DOM 树或 JavaScript 代码中没有对 DOM 节点的引用时,才能对 DOM 节点进行垃圾回收。
我建议你看看你的代码,看看是否有函数在你想要的时候运行。如果你使用 react 或类似的框架,你必须小心它们的生命周期(很重要!)。
同样在这里https://developers.google.com/web/tools/chrome-devtools/memory-problems/ 有很多有用的信息,比如 - Investigate memory allocation by function - 发现频繁的垃圾回收
那么有什么方法可以在离开特定页面时删除所有分离的元素,或者为什么浏览器不从内存中删除它
如果我们拥有的是I use javascript
信息,我无法提供任何更准确的假设或建议。无数库、堆栈和技术组合的无数后果使这一点无法猜测。
推荐阅读
- postgresql - jdbc - HikariCP:看到低插入吞吐量,而 DB/App cpu % 仍然很低
- reactjs - 在 nextjs 中获取 URL 路径名
- java - 在Android的recyclerview中滚动时行项宽度发生变化
- oracle - 我的报告问题右侧的空格修剪
- jquery - codeigniter中jquery ajax中的员工休假计数值
- android - 如何断开活动与应用程序的连接
- python - 如何在 python 中正确格式化 if/else 缩进?
- file-handling - 在python中使用dict读取文本文件
- azure - 每个 COSMOS 实例一个数据库还是单个 COSMOS 实例多个数据库?
- sql - 将 MS Access 数据库检索到 vb6 并使用 2 DTpicker 过滤数据以获得总和速率