微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Node.js内存泄漏,尽管Heap RSS大小不变

根据我的服务器监控,我的内存使用量随着时间的推移逐渐增加

在正常运行约4周后,它最终导致问题/崩溃(这是有道理的,因为我在EC2上使用m1.large实例=> 8GB RAM,并且RAM似乎以每周约1.5 GB的速度增加) .

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

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

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

解决方法

您可以尝试 node-memwatch模块,这有助于在Node中进行泄漏检测和堆差异.

堆差异看起来类似于:

{
  "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
      }
    ]
  }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐