我尝试使用Chrome" Take Heap Snapshot"跟踪某些node.js代码中的内存泄漏,但拍摄快照的行为永远不会完成。
我是否以某种方式误用了该工具?
这是node.js app:
#!/usr/bin/env node
var serialserver = require('./p5.serialserver');
serialserver.start();
console.log("p5.serialserver is running");
以下是我如何调用它以及打印出来的内容:
$ node --inspect ./p5serial
Debugger listening on port 9229.
Warning: This is an experimental feature and could change at any time.
To start debugging, open the following URL in Chrome:
chrome-devtools://devtools/remote/serve_file/@521e5b7e2b7cc66b4006a8a54cb9c4e57494a5ef/inspector.html?experiments=true&v8only=true&ws=localhost:9229/node
p5.serialserver is running
在Chrome(版本59.0.3071.115)中,在OSX 10.12.6(Sierra)下运行,我打开指定的网址,然后点击Take Heap Snapshot
。我看到左栏中的图标显示:
Snapshot 1
Snapshotting...
...但即使等了十分钟,快照也没有完成。这不是一个特别大的节点应用程序。
我错过了什么?
答案 0 :(得分:1)
我能够成功获取以下内容的快照:
const http = require('http');
const port = 3000;
const requestHandler = (request, response) => {
console.log(request.url);
response.end(`you requested ${request.url}`);
};
const server = http.createServer(requestHandler);
server.listen(port, (err) => {
if (err) {
return console.log('something bad happened', err);
}
console.log(`server is listening on ${port}`);
});
通过node --inspect server.js
版本信息:
尝试下载Chrome Canary,看看问题是否已在最新版Chrome中解决。
如果没有,那么这个串行服务器可能会发生一些事情。你构建它了,还是图书馆?