在Electron应用程序中启用手动垃圾回收

Jac*_*nat 5 node.js electron

我一直在尝试在编译和构建的Electron应用程序中配置垃圾收集和最大旧空间大小。

我可以通过CLI调试这些设置,electron.cmd --js-flags="--expose_gc --max-old-space-size=128" .并且可以使用Global GC。

但是,当我尝试使用电子API app.commandLine.appendArgument('--js-flags', '--expose_gc --max-old-space-size=128');设置这些标志时,它没有按预期方式启用GC,因此在该app.on('ready', ...)函数之前会调用此代码。

设置NODE_OPTIONS也没有帮助(我看到此功能在最新的Electron版本中已被禁用,如下所示:https : //github.com/electron/electron/issues/12695

有没有人有工作的经验?

Han*_*och 7

app.commandLine.appendSwitch('js-flags', '--expose_gc --max-old-space-size=128')
Run Code Online (Sandbox Code Playgroud)

appendSwitch 的第一个参数不使用--前缀,只需删除它。seconds 参数按原样解析,这就是它保留前缀的原因。

另请注意,如果您使用 apppendSwitch,它只会为渲染器公开 gc,如果您想在那里使用它,则需要添加 CLI 参数。

  • 谢谢,现在我看到它是非常明显的。我会看看我是否可以在 [命令行文档](https://github.com/electron/electron/blob/master/docs/api/chrome-command-line-switches.md) 上提交拉取请求以突出显示这个。至于让 GC 在主进程中工作,我发现它可以工作:`require("v8").setFlagsFromString('--expose_gc');``global.gc = require("vm").runInNewContext(' gc');` 再次感谢。:) (3认同)