Electron 给主进程提供了不少对系统能力调用的 API,如托盘、系统通知、macOS 中 dock 栏设置等。但是如果对这些 Electron 能力的使用方式不对,就可能导致不必要的大量内存占用甚至是泄漏。比如 QQ 中,我们通过短间隔定时调用 Tray setImage API 来实现 QQ 托盘的闪烁,如果不注意传入 string Path 则会每次创建 Image 对象导致内存占用,正确的方式应该创建 NativeImage 并缓存,调用 Tray setImage 传入指定 NativeImage,避免反复创建 Image 导致的内存问题。[Windows 托盘图标内存泄漏定位]类似的问题还有在 macOS 中调用 API dock.setIcon 也会持续占用约 20M 的 CGImage位图内存,正确的方案应该是不通过 Electron API 指定,而是通过打包 plist(属性文件)指定 dock 栏图标。[macOS dock 图标内存泄漏定位] 在使用 Electron 的过程中,还存在类似会导致内存问题的使用方式,我们需要结合客户端内存工具进行深度挖掘和分析,才能发现和处理这些问题。