debugtypescriptModerate
Electron memory usage and renderer process bloat
Viewed 0 times
memory leakBrowserWindowrenderer processdestroyipcMain removeHandlermemory usage
electron
Problem
Electron apps consume significantly more RAM than expected, often due to multiple renderer processes, retained DOM references, or uncleaned event listeners on BrowserWindow instances.
Solution
Audit with Chrome DevTools memory profiler in renderer. Destroy BrowserWindows that are no longer needed (win.destroy()). Remove IPC listeners when windows close. Use process.getCPUUsage() and process.getProcessMemoryInfo() for monitoring.
Why
Each BrowserWindow spins up a separate renderer process (full Chromium instance). Keeping hidden or unused windows alive wastes 50-150MB each.
Gotchas
- win.close() triggers the close event and may be intercepted; win.destroy() always destroys
- ipcMain.on() listeners accumulate if not removed with ipcMain.removeHandler()
- Preload scripts run in a separate context but share the renderer process memory
- webContents.on('destroyed') is the right place to clean up per-window resources
Code Snippets
Clean up on window close
win.on('closed', () => {
ipcMain.removeHandler('app:read-file');
win = null; // dereference
});Revisions (0)
No revisions yet.