2

最近我们发现我们的 node.js 应用程序很可能有一些内存泄漏(显示的内存消耗htop越来越多)。我们已经设法将少量代码隔离到单独的脚本中,这仍然会导致内存泄漏,现在正试图追捕它。但是,我们在分析和理解由htop工具和这个 v8 分析器收集的测试结果时遇到了一些麻烦:http: //github.com/c4milo/node-webkit-agent

脚本启动后 htop 显示以下内存消耗:

http://imageshack.us/a/img844/3151/onqk.png

然后应用程序运行 5 分钟,我每 30 秒拍摄一次堆快照。5分钟后结果如下:

堆快照大小:

http://imageshack.us/a/img843/1046/3f7x.png

htop5分钟后的结果:

http://imageshack.us/a/img33/5339/2nb.png

因此,如果我没看错,那么 V8 分析器显示没有严重的内存泄漏,但htop显示内存消耗从 12MB 增加到 56MB!谁能说出这种差异来自哪里?为什么即使在测试开始时htop,分析器也显示 12MB 和 4MB?

4

1 回答 1

3

htop 作者在这里。您正在正确阅读 htop 数字。我不了解 V8 分析器,但在开始时的“12MB 与 4MB”问题上,很可能 V8 只计算您的 JS 数据,而 htop 计算进程的整个常驻内存使用情况,包括 V8 本身使用的 C 库等。

于 2013-10-10T21:49:16.660 回答