【问题标题】:node.js heap memory dump, why the String memory is too high?node.js堆内存转储,为什么String内存太高?
【发布时间】:2019-02-07 05:56:43
【问题描述】:

我的代码中有一些内存泄漏。所以我使用 heapdump nodemodule 拍摄了内存快照。 使用 heapdump 我已经修复了一些东西,然后它就很好了。但是为什么字符串缓冲区大小仍然太高并且不断增加?

我附上了我的组件的内存堆转储的屏幕截图。 heapdump 文件大小为 139MB,所以我不能在这里附加。我不知道你们还需要什么其他信息来帮助解决这个问题......

【问题讨论】:

  • 我也遇到了同样的问题,你解决了吗?
  • 还不完全,但越来越近了。一旦我得到完整的解决方案,就会发布。
  • 截图中的那些字符串是包含你require()的所有文件的函数。由于它们是匿名的,因此每个必需的模块都有自己的。然而,我想知道为什么他们没有被释放。您使用的是什么 Node.js 版本?你是在使用原生 JS 还是某种 compile-to-js 语言(CoffeeScript、TypeScript 等)?
  • 你是在循环中做require()吗?
  • @TomG 不,我不会做那样的事情......

标签: node.js heap-memory heap-dump


【解决方案1】:

memwatch 模块可能有助于提供更多见解。它将允许您订阅leak 事件

memwatch.on('leak', function(info) { 
console.error('Memory leak detected: ', info); 
});

阅读this tutorial,它很好地解释了如何检测节点内存泄漏的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 2020-12-11
    • 2021-07-05
    • 2018-08-08
    相关资源
    最近更新 更多