gpt4 book ai didi

node.js - nodejs 减少 v8 垃圾收集器的内存使用量

转载 作者:IT老高 更新时间:2023-10-28 23:07:19 26 4
gpt4 key购买 nike

我正在使用 util 调试 nodejs 应用程序模块,而 heapUsed 值保持在 30-100MB 左右,heapTotal 值增长到 1.4GB。

Here is a question about similar behaviour

我了解到这是 v8 垃圾收集器的行为方式,但问题是如果在 512 MB 设备上运行,如何减少它分配的内存量(使其小于 1.4GB)

最佳答案

您需要控制最大内存大小标志(所有大小均以 MB 为单位)。

recommended amounts for a "low memory device" are :

node --max-executable-size=96 --max-old-space-size=128 --max-semi-space-size=1 app.js

适用于 32 位和/或 Android 和

node --max-executable-size=192 --max-old-space-size=256 --max-semi-space-size=2 app.js

适用于 64 位非安卓系统。

这些会将堆总数分别限制为 225mb 和 450mb。它不包括 JS 之外的内存使用情况。例如,缓冲区被分配为“c 内存”,而不是在 JavaScript 堆中。

您还应该知道,越接近堆限制,在 GC 中浪费的时间就越多。例如。如果您的内存使用率为 95%,则 90% 的 CPU 将用于 GC,10% 用于运行实际代码(不是实数,但给出总体思路)。所以你应该尽可能地慷慨,并且永远不要超过最大内存使用量的 16%(即 heapUsed/limit 不应大于 0.16)。 16% 只是我从一些论文中记忆的,它可能不是最理想的。

标志:

  • --max-executable-size 为可执行代码保留的最大堆大小(即时编译的 JavaScript 的 native 代码结果)。
  • --max-old-space-size为长期对象保留的最大堆大小
  • --max-semi-space-size为短期对象保留的最大堆大小

关于node.js - nodejs 减少 v8 垃圾收集器的内存使用量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30252905/

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