最近我们发现我们的 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
5 分钟后 htop
的结果:
http://imageshack.us/a/img33/5339/2nb.png
所以,如果我没看错的话,V8 分析器显示没有严重的内存泄漏,但 htop
显示内存消耗从 12MB 增加到 56MB!谁能说出这种差异从何而来?为什么甚至在测试开始时 htop
显示 12MB 而分析器显示 4MB?
最佳答案
htop 作者在这里。你读的 htop 数字是正确的。我不知道V8分析器,但是在开始时的“12MB vs 4MB”问题上,最有可能的情况是V8只计算你的JS数据,而htop计算进程的整个驻留内存使用情况,包括V8本身使用的C库等。
关于node.js - 跟踪 Node.js 中的内存泄漏 - v8 分析器与 htop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19270719/