13
  • 版本:“电子”:“1.6.2”,“电子生成器”:“^16.8.2”,
  • 目标:windows x64

我知道我可以--js-flags="--max-old-space-size=4096"在使用电子运行时添加。但是我应该把这个参数放在电子构建器的构建配置中吗?

4

2 回答 2

16

在 main.js 中,添加:

app.commandLine.appendSwitch('js-flags', '--max-old-space-size=4096');

根据Supported Chrome Command Line Switches,这应该在ready事件发出之前调用。例如:

import { app } from "electron";

app.commandLine.appendSwitch('js-flags', '--max-old-space-size=4096');

app.on('ready', () => {
    // ...
});
于 2017-05-17T12:27:24.437 回答
2

只是想补充一点,就我而言,该max-old-space-size标志仅在我将其放置在我的 webview 的“预加载”脚本中时才成功应用,如下所示(Start_WebviewPreload.ts):

import {remote} from "electron";
remote.app.commandLine.appendSwitch("js-flags", "--max-old-space-size=8192");

将它放在“main.js”文件(整个程序的入口点)中,没有做任何事情。(我什至使用 Process Hacker 2 检查了命令行参数,在我按照上面提到的移动代码之前,它没有显示任何电子进程具有该标志)

另外,我注意到在命令行标志的设置和执行之间可能存在某种竞争条件app.on("ready")——有时,上面的代码适用于主渲染器进程(不在-webview),而其他时候则不然。

所以基本上:如果你想确保你的命令行开关工作,在给定的浏览器窗口/网络视图的预加载脚本中应用它们。

于 2019-01-16T04:20:52.603 回答