Node 内存泄漏排查

在Node中,由于V8的对内存大小的限制,他对内存泄漏非常敏感。

node-heapdump工具。

示例代码:

const leakArray = [];

const leak = function () {

  leakArray.push("leak " + Math.random());

}

http.createServer(function(req, res) {

  leak();

  res.writeHead(200, {'Content-Type': 'text/plain'});

  res.end("Hello World\n");

}).listen(1337);

在上面代码中,每次访问服务器进程都会引起leakArray数组中元素的增加,而且得不到释放。

安装node-heapdump工具

npm install heapdump

安装后在第一行引入

const heapdump = require('heapdump')

启动服务进程,访问多次后,leakArray数组中就会积累了大量的元素。这个时候通过向服务进程发送SIGUSR2信号,让node-heapdump抓拍一份堆内存的快照。

kill -USR2 <pid>

这份快照会在文件目录下以heapdump-<sec>.<usec>.heapsnapshot的格式存放。可以通过chrom的开发者工具打开查看


Load Heapdump File


内存中的数组对象
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容