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

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


Load Heapdump File


内存中的数组对象

你可能感兴趣的:(Node 内存泄漏排查)