微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Electron Renderer 仅在 DevTools 打开时处理 OOM

如何解决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 是否有某种单独的内存限制?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。