【问题标题】:Disable node.js garbage collection for a while暂时禁用 node.js 垃圾收集
【发布时间】:2016-01-29 05:26:38
【问题描述】:

有没有办法在指定的时间段内显式禁用 GC 运行(至少是最耗时的,比如旧空间中的 GC 中断),同时执行一些对延迟敏感的代码?像这样的:

disableGc();
runCodeWithoutDelays();
enableGc();

可能使用一些节点选项或本机模块?或者我可以编写自己的模块吗?V8 中有 API 吗?

【问题讨论】:

  • 嗯,this 会为你工作吗?
  • 并非如此。这将触发非增量主要 GC 运行 (mark-sweep-compact),与快速增量运行相比,这些运行非常繁重并引入了较长的延迟。与其自己运行 GC,我想阻止 GC 一段时间,然后再次释放它以正常运行。
  • 我建议将此问题作为 Node.js 存储库和 v8 邮件列表中的错误提出。
  • 我也有同样的问题。你找到解决办法了吗?
  • 问题,这段时间需要分配内存吗?

标签: javascript node.js garbage-collection v8


【解决方案1】:

据我所知,您无法手动停止 v8 的垃圾收集器,您唯一能做的就是启动 gc 进程手动运行 global.gc() 但不停止 v8 的进程。

【讨论】:

    【解决方案2】:

    另一个人有同样的问题,并在 GitHub 上发布了一个问题:https://github.com/nodejs/help/issues/462

    答案是您不能在 Node 中禁用 GC,但您至少可以通过使用 --max_old_space_size、--max-semi-space-size 调整内存选项以使用最大可用空间并延迟 GC。

    在上下文中提供了一个示例。

    【讨论】:

      猜你喜欢
      • 2011-10-15
      • 1970-01-01
      • 2020-01-21
      • 2011-07-16
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多