Node.js内存泄漏,尽pipeHeap + RSS大小不变

根据我的服务器监控,我的内存使用量正在逐渐上升:

在这里输入图像描述

正常运行4周后,最终导致问题/崩溃(这是有道理的,因为我在EC2上,m1.large instances => 8GB RAM,RAM似乎每周增加大约1.5 GB)。

如果我重新启动我的node.js应用程序,内存使用情况重置。 然而…我通过process.memoryUsage()跟踪我的内存使用情况,甚至在1周之后,我看到

 {"rss":"693 Mb","heapTotal":"120 Mb","heapUsed":"79 Mb"} 

我错过了什么? 显然泄漏是在节点,但过程似乎没有意识到它…

您可以尝试node-memwatch模块,它有助于节点中的泄漏检测和堆比较。

堆差异看起来类似于:

 { "before": { "nodes": 11625, "size_bytes": 1869904, "size": "1.78 mb" }, "after": { "nodes": 21435, "size_bytes": 2119136, "size": "2.02 mb" }, "change": { "size_bytes": 249232, "size": "243.39 kb", "freed_nodes": 197, "allocated_nodes": 10007, "details": [ { "what": "String", "size_bytes": -2120, "size": "-2.07 kb", "+": 3, "-": 62 }, { "what": "Array", "size_bytes": 66687, "size": "65.13 kb", "+": 4, "-": 78 }, { "what": "LeakingClass", "size_bytes": 239952, "size": "234.33 kb", "+": 9998, "-": 0 } ] }