最近我们发现我们的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 ?
顶级作者。你没看错。我不知道 V8 分析器,但是在开始时"12MB 与 4MB"的问题上,很可能是 V8 只考虑你的 JS 数据,而 htop 则考虑进程的整个驻留内存使用量,包括 V8 本身使用的 C 库等。