memory-leaks - 电子内存使用分析
问题描述
我的电子应用程序有一些记忆问题。启动时内存使用量约为 120 MB。JS 堆保持在 32 MB 不变。在浏览器窗口中不执行任何操作时,任务管理器中渲染器的内存使用量每秒增加约 1 MB。在增加 20 MB 后,它似乎又下降了 16 左右(可能是 GC)。但是让窗口打开几分钟会导致 300 MB 内存使用。所以某处存在内存泄漏。
由于 JS 堆大小永远不会改变,我假设节点进程内部存在泄漏,我在这方面是否正确?如何分析电子/节点进程中的内存使用情况?(因为 chrome 配置文件在这种情况下似乎没有帮助)
与https://spectrum.chat/electron/general/debugging-high-memory-usage-in-electron~80057ff2-a51c-427f-b6e1-c297d47baf5b和https://www.electronjs.org/docs/tutorial/相关表现
解决方案
我有同样的问题,我的应用程序以 200MB 的已用内存开始,不到 20 分钟,它使用超过 450MB 什么都不做……只显示一些图像。树莓派 +3b 也发生了同样的情况。内存的使用不断增长,直到 rasp 死亡。
我发现如果你打开了 devtools 窗口(我假设你有调试目的)它只会吃掉所有的内存。关闭 devtools 窗口后,我在 Win 系统上的应用程序使用 100MB(稳定),在我的树莓派中使用 300MB(稳定)。
我在某处读到,当使用 GPU 进行渲染时,它也使用了大量内存,所以我使用了
app.disableHardwareAcceleration();
推荐阅读
- c# - 我的项目没有出现在 Klov 报告中
- python - python中的按位运算和二进制补码
- javascript - ramda.js 中带有模板字符串的 Pointfree 样式
- node.js - 如何在节点 js 中禁用邮件预览(电子邮件模板)?
- vba - 带有打印弹出消息的已打开 word 文档的 VBA 代码
- android - AlarmManager ELAPSED_REALTIME 是如何工作的?
- connection - Usb 互联网密钥和树莓:禁用互联网连接,仅用于短信
- c++ - 逐个检测数组元素的变化
- java - 当我将撇号放入 .properties 文件时,为什么 mvn clean install 失败?
- java - 我的 ajax 不会执行我的控制器