node.js - 跟踪 Node.js 中的内存泄漏 - v8 分析器与 htop

标签 node.js memory-leaks profiling v8 htop

最近我们发现我们的 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/

相关文章:

node.js - 尝试使用 PostgreSQL 对 Sails 1.0.2 进行 dockerize,无法以任何方式连接到数据库

java - Android 内存泄漏管理显示 "Don use non-static inner classes"但这会带来副作用

linux - Linux 上的分析工具显示传递给调用函数的参数大小

haskell - 分析多态性的成本?

javascript - 如何包装异步包函数?

javascript - 将子 JSON 对象移动到其自己的具有父 ID 的对象

node.js - wss Lets加密 UNABLE_TO_GET_ISSUER_CERT

java - 对大型应用程序进行分析很困难

Android - Firebase - 我需要删除每个监听器吗?

c - 使用 valgrind 而不是 gcc 进行分析