我正在运行一个带有 Node.JS 的 Socket.IO 服务器,它通常使用大约 400 MB 的内存,因为有很多数据被缓存发送到客户端。然而,几个小时后,它突然开始在大约 40 分钟内增长到 1.4 GB。有人告诉我使用 heapdump 来查找是否存在内存泄漏。
问题是堆转储结果只有 317 MB,而且里面没有任何异常,所以我一直在调试。我还使用 nodetime 运行它,它表示 V8 堆使用量约为 400 MB,但 V8 堆总大小为 1.4 GB。
如何找出剩余的 1 GB 来自哪里?
也许 node-memwatch 可以帮助你?
https://github.com/lloyd/node-memwatch
来自其自述文件:
node-memwatch 可以帮助您检测和查找 Node.JS 代码中的内存泄漏。它提供:
泄漏事件,当您的代码出现内存泄漏时发出。
偶尔发出的统计事件,为您提供描述堆使用情况和随时间变化的趋势的数据。
HeapDiff 类可让您比较两个时间点之间的堆状态,告诉您已分配的内容和已释放的内容。
| 归档时间: |
|
| 查看次数: |
2885 次 |
| 最近记录: |