gpt4 book ai didi

尽管堆大小相当一致,node.js RSS 内存会随着时间增长

转载 作者:搜寻专家 更新时间:2023-10-31 22:34:32 25 4
gpt4 key购买 nike

我有一个 node.js 应用程序,尽管 heapUsed/heapTotal 保持相对恒定,但 RSS 内存使用似乎一直在增长。

这是一周内进行的三个内存测量的图表(来自 process.memoryUsage()):

memory graph

您可能会注意到存在某种周期性模式 - 这与应用程序每天的事件相对应。

堆实际上似乎确实有轻微的增长,尽管远不及 RSS 的增长。所以我一直在不时地进行堆转储(使用 node-heapdump),并使用 Chrome 的堆比较功能来查找泄漏。
一个这样的比较可能如下所示(按大小增量降序排列):

heap dump

实际显示的内容取决于拍摄快照的时间(例如,有时会分配更多的 Buffer 对象等)- 在这里,我尝试采用最能说明问题的示例。

首先要注意的是左侧的大小(203MB 与 345MB)比图中显示的堆大小高得多。其次,大小增量显然与 142MB 的差异不匹配。事实上,按 size delta 升序排序,很多对象已经deallocated,这意味着堆应该更小!

有没有人知道:

  • 为什么会这样? (RSS 不断增长,堆大小稳定)
  • 如果不时不时重启服务器,我该如何阻止这种情况发生?

其他细节:
Node 版本:0.10.28
操作系统:Ubuntu 12.04,64 位

更新:正在使用的模块列表:

感谢阅读。

最佳答案

您看到的 RSS 使用和堆使用之间的区别在于缓冲区。

“Buffer 类似于整数数组,但对应于 V8 堆之外的原始内存分配” https://nodejs.org/api/buffer.html#buffer_buffer

关于尽管堆大小相当一致,node.js RSS 内存会随着时间增长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24481519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com