This website requires JavaScript.

node内存泄漏查找

2018.05.02 15:39字数 935阅读 433喜欢 0评论 0

调试工具
1、node-heapdump
2、chrome调试工具

调试流程
安装node-heapdump

npm install node-heapdump --save-dev  

打开项目运行.js文件,进行heapdump配置。

// 内存快照代码
 var headpdump = require('heapdump')
//
 setInterval(function () {
   console.log('st headpdump')
   headpdump.writeSnapshot(function(err, filename) {
     console.log('dump written to', filename)
   })
 }, 15000)

module.exports = {...// }

我设定了每1.5秒,heapdump进行内存快照一次。
并且在间隔过程中进行以下操作。

1、 载入页面,等候一次快照
2、 刷新一次页面,等候一次快照
等待快照完成之后,heapdump会将快照文件保存在项目根目录中。
接着,我们打开chrome开发者工具,切换到memory选项卡,点击load载入hepdump生成在根目录的文件。

分别载入第一次页面快照,跟刷新一次之后的快照。我们点击切换右侧下拉箭头的视图选项卡类型。点击切换视图到Comparison。

在等候Chrome比对两个文件之后,可以看到第二个文件的内存快照信息。查看右侧# Delta选项。

可以看到 刷新一次之后,增加了69个闭包未释放。
展开闭包(closure)可以看到具体问题,然后定位代码解决。