我想在Nodejs / V8中更好地理解GC流程。

您能否为以下问题提供一些信息:


触发GC时,这是否会阻止节点js的事件循环?
GC是在其自己的进程中运行还是只是事件循环的子方法?
当通过Pm2(集群模式)生成Node.js进程时执行实例
确实有它自己的流程,还是在
实例?
出于日志记录目的,我正在使用Grafana
https://github.com/RuntimeTools/appmetrics-statsd),有人可以
解释差异\有关这些量规的更多详细信息:

gc.size JavaScript堆的大小(以字节为单位)。

gc.used JavaScript堆上使用的内存量(以字节为单位)。


node.js - NodeJS,PM2,GC,Grafana-更好的理解-LMLPHP


在压力测试方面,是否存在GC无法释放内存(gc.used)的情况?


这些问题与我当前面临的一个问题有关。 GC的已用内存正在增加,并且不会释放任何内存(经典内存泄漏)。问题在于它仅在我们有很多请求时出现。

我试着用max-old-space-size来避免pm2重新启动,但是看起来GC不再释放了,整个应用程序变得非常慢...

有任何想法吗 ?

最佳答案

好的一些问题,我已经想通了:

gc.size =总堆大小(https://nodejs.org/api/v8.html-> getHeapStatistics),

gc.used = used_heap_size

看起来不错,当gc_size达到一个平台时,它再也不会下降=>

Memory usage doesn't decrease in node.js? What's going on?

09-30 16:24
查看更多