用node-webkit-agent查看node应用的堆内存

node-inspector可以用来调试node应用,但是它的profile选项卡始终不出来,也就是无法用来进行heap snapshot了,去其主页上看了一下,发现它明确说明了不支持profile功能  🙁

其作者推荐使用node-webkit-agent,于是安装后使用了一下,的确可以用。下面简单记录一下使用流程:

·安装:
我本来想全局安装了事的,但跑我的应用时始终提示找不到webkit-devtools-agent模块,无奈只能本地安装。

npm install webkit-devtools-agent

·在你的node应用中(app.js)包含该模块:

var agent = require('webkit-devtools-agent');//仅需要包含即可,然后就没有然后了
var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World
');
}).listen(8080, '127.0.0.1');
console.log('[%s] Server running at http://127.0.0.1:8080/', process.pid);//注意,最好像这里一样把进程id打出来,因为我们接下去要用

·启动你的应用

node app.js

·终端中会输出log,你可以看到进程id,比如叫3717

·新开一个终端,给你的进程发信号:

kill -SIGUSR2 3717

·然后你原先跑应用的终端中会输出类似如下的东东:

webkit-devtools-agent: Spawning websocket service process...
webkit-devtools-agent: A proxy got connected.
webkit-devtools-agent: Waiting for commands...
webkit-devtools-agent: Websockets service started on 0.0.0.0:9999

·看到最后一行9999,说明成功了,可以继续下去。
在chrome中访问这个地址:
http://c4milo.github.io/node-webkit-agent/26.0.1410.65/inspector.html?host=localhost:9999&page=0

接着就能看见这样的界面了,注意,目前版本中只有Profiles选项卡有用。你可以多次进行快照,然后看看内存是否会疯长,从而推测是否有内存泄露。至于更细致的使用方法,咳咳,还木有学会。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据