产生的原因:
- 闭包
- 未取消监听
- 全局变量
操作步骤:
- npm install heapdump -target=Node.js
- heapdump.writeSnapshot(‘./‘+Date.now()+’.heapsnapshot’);
- heapdump 可以使用 kill 向程序发送信号来打印内存快照(只在 *nix 系统上提供):kill -USR2
- 推荐打印 3 个内存快照,一个是内存泄漏之前的内存快照,一个是少量测试以后的内存快照,还有一个是多次测试以后的内存快照。
- node —expose-gc index.js 运行代码
- 之后打开 devtool,点击 profile,载入内存快照,打开对比
- heapdump 可以使用 kill 向程序发送信号来打印内存快照(只在 *nix 系统上提供):kill -USR2
如何避免:
- 使用eslint等检测工具,删除不必要变量
- 创建监听或者申请资源时记得处理销毁的情况