electron-内存-垃圾回收-window.gc
主进程开启暴露垃圾回收方法
js
// main.js
const { app, BrowserWindow } = require("electron");
// 在应用程序启动之前添加此行
app.commandLine.appendSwitch("js-flags", "--expose-gc");
let mainWindow;
app.whenReady().then(() => {
mainWindow = new BrowserWindow({
width: 800,
height: 600,
});
mainWindow.loadFile("index.html");
});
渲染进程添加 window.gc()
方法
js
// 检查 window 对象上是否存在 gc 方法
if (window.gc) {
// 手动触发垃圾回收
window.gc();
} else {
// 如果 gc 方法未暴露,输出错误信息
console.error("GC is not exposed");
}
注释说明:
if (window.gc)
: 判断window
对象是否有gc
方法,这是因为手动垃圾回收功能需要提前暴露。window.gc()
: 如果存在gc
方法,调用它来手动触发垃圾回收。else
: 如果gc
方法不存在,执行以下代码。console.error("GC is not exposed")
: 输出一条错误信息,提示垃圾回收方法未被暴露,需要检查是否已正确配置了--expose-gc
标志。
注意事项:
- 手动垃圾回收:一般情况下,JavaScript 引擎会自动管理内存,手动调用垃圾回收仅在特殊情况下才需要。
- 暴露
gc
方法:确保在 Electron 主进程和渲染进程中都启用了--expose-gc
,这样window.gc
才会存在。