Node.js和V8垃圾回收

min*_*des 13 garbage-collection v8 node.js

这是我到目前为止所读到的内容,如果我错了,请纠正我:

  1. Node.js基于V8 JavaScript引擎.
  2. V8 JavaScript引擎实现了stop-the-world垃圾收集

哪个..暂停Node.js有时会完全关闭几秒钟到几分钟来处理垃圾收集.

如果这是针对生产代码运行的,那对于10,000个用户来说就是几秒钟.

这在生产环境中真的可以接受吗?

Eri*_*rry 13

是否可接受取决于您的应用程序和堆大小.Big Gc大约是每兆字节1.3毫秒.因人而异.压缩GC的一半左右.大约1 GC的10大.3中大约1个GC压缩.使用V8标志--trace-gc来记录GC.我们已经做了一些减少暂停的工作.没有承诺,没有时间表.请参阅V8 repo中的branches/experimental/gc.

  • 这个答案并没有过时.增量GC已经着陆,长时间暂停应该成为过去.如果您仍然看到大的GC暂停,请提交错误并附加--trace-gc的输出.当然,我们无法做出有关修复的承诺,但对于正常工作负载,我们预计暂停的上限大约为40-50ms,如果使用--max-new-space-size = 1024,则大约为4ms - - 紧凑的标志. (13认同)