Javascript NodeJS:调用global.gc()不会';t将内存减少到最小?

Javascript NodeJS:调用global.gc()不会';t将内存减少到最小?,javascript,node.js,memory-leaks,garbage-collection,v8,Javascript,Node.js,Memory Leaks,Garbage Collection,V8,为了调查内存泄漏,我设置了一个路由,在每个POST/gc app.post('/gc', function(req, res){ global.gc(); }); 但是,我注意到,如果我发送这个请求,每次都会越来越多地减少内存使用。调用一次global.gc()是否足以将内存减少到最小值 如果是这样,为什么连续多次调用会减少每次调用的内存 (我正在使用Node.js v0.12)在非常高的级别上,V8将GC拆分为两部分。寻找要收集的垃圾,并实际收集垃圾。调用gc()仅执行第二部分,即

为了调查内存泄漏,我设置了一个路由,在每个
POST/gc

app.post('/gc', function(req, res){
     global.gc();
});
但是,我注意到,如果我发送这个请求,每次都会越来越多地减少内存使用。调用一次
global.gc()
是否足以将内存减少到最小值

如果是这样,为什么连续多次调用会减少每次调用的内存


(我正在使用Node.js v0.12)

在非常高的级别上,V8将GC拆分为两部分。寻找要收集的垃圾,并实际收集垃圾。调用
gc()
仅执行第二部分,即收集已找到的垃圾。

如何(以及何时)测量内存消耗?@Bergi应用程序连接到PM2,我使用
PM2 monit
实时测量内存。我等着记忆爬得很高(1G)。然后我发送了几次
global.gc()
信号。每次它都会减少大约30-200Mb的内存,直到达到绝对最小值约80Mb。因此,需要进行10次完整的垃圾收集,这与它应该做的事情(一次性完成完整的垃圾收集)相矛盾。这是由于v8 gc的工作方式(扫描)造成的。请看一下这篇关于gc的伟大文章