Skip to content

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 才会存在。

其他

如何让浏览器马上进行垃圾回收