Node.JS进程使用1.4 GB的内存,但heapdump只有300 MB

时间:2014-03-28 12:00:04

标签: node.js v8

我正在运行一个带有Node.JS的Socket.IO服务器,它通常使用大约400 MB的内存,因为有很多数据被缓存以发送给客户端。然而,几个小时后,它突然开始在大约40分钟内增长到1.4 GB。有人告诉我使用heapdump来查找是否存在内存泄漏。

问题是heapdump只有317 MB,并且其中没有任何东西看起来与众不同,所以我坚持调试。我也用nodetime运行它,它表示V8堆的使用量大约为400 MB,但总的V8堆大小是1.4 GB。

如何找出剩余1 GB的来源?

1 个答案:

答案 0 :(得分:0)

也许node-memwatch可以帮到你?

https://github.com/lloyd/node-memwatch

从其自述文件:

  

node-memwatch用于帮助您检测和查找内存泄漏   Node.JS代码。它提供:

     

当您的代码出现内存泄漏时发出的泄漏事件。

     

偶尔发布的统计信息事件,为您提供描述您的数据的数据   堆使用情况和趋势随着时间推移。

     

一个HeapDiff类,可让您比较堆之间的状态   两个时间点,告诉你已经分配了什么,以及有什么   已被释放。