javascript - Electron Renderer 仅在 DevTools 打开时处理 OOM
问题描述
我有一个带有渲染器进程的电子应用程序,可以显示大图像(~300MB)。图像数据是通过 web worker 中的 websocket 连接接收的,我在其中使用 rxjs 进行 websocket 管理。
当我打开 Chrome DevTools 时,渲染器崩溃并显示来自电子的以下消息:
Renderer process oom - see https://www.electronjs.org/docs/tutorial/application-debugging for potential debugging information.
当我没有打开 DevTools 时,渲染器进程不会崩溃。我曾尝试在启动渲染器进程之前在 Electron 中设置标志:--js-flags="--max-old-space-size=[memory size in MB]"
这有助于缓解即使在 DevTools 关闭的情况下我看到的一些崩溃,但是无论我将这个数字设置多高,当 DevTools 打开和一条大消息时,进程仍然始终崩溃通过 websocket 接收。我在 Windows 10 的任务管理器中看不到任何高内存使用率。
经过大量调试后,我将渲染器崩溃的范围缩小到在收到大型 websocket 消息时立即崩溃。我在 JavaScript 中数据可用的第一个点设置了断点和控制台日志消息,并且在渲染器进程崩溃之前它们不会被捕获/显示。所以我的猜测是,打开 DevTools 会出现某种内存问题。rxjs 不会有问题,因为它可以在 DevTools 关闭的情况下正常工作。我在这里遇到的 Chrome DevTools 是否有某种单独的内存限制?
解决方案
推荐阅读
- excel - 从一个大的 excel 文件自动生成的图表
- python - 我的埃拉托色尼筛法是否正确实施?(Python)
- .htaccess - .htaccess - 删除 .html 文件扩展名会导致 500 内部错误(应该是 404?)
- vba - 将 CSV/Excel 文件读入数组
- java - for while 语句不会重复
- mininet - 在 openNetMon 中找不到模块
- go - 监听调用 Golang 中另一个结构使用的结构函数
- r - 条件面板 R 中的多个条件闪亮
- dialogflow-es - 使用 Google Actions 录制音频
- r - R 范围:1:0 - 不合逻辑的行为