我有这个简单的http服务器
var http = require('http');
var server = http.createServer(function(request, response) {
var data = [];
for ( var i=0; i < 1000000; i++ ) {
data.push({});
}
response.end('Done');
});
server.listen(3000);
当我启动服务器时,该过程使用大约8MB的内存。 当我向服务器发出请求时,内存使用率会上升到100MB以上,就会一直保持这种状态。然后我按住F5几秒钟来发送一些请求,并且在某些时候内存使用量增加到400MB以上。处理完所有请求后,服务器仍在使用100MB以上。
当我提出另一个请求时,内存有时会高于或接近200MB或保持大致相同。我让服务器运行了一段时间,内存没有被释放。
我尝试了date = null
,结果是一样的。然后我尝试使用--expose-gc
标志运行服务器并在我使值为空后放置global.gc()
并且结果更好但内存仍然保持在50MB以上。
答案 0 :(得分:0)
如果您的系统有足够的可用内存,则不太可能出现任何需要进行垃圾回收的情况。如果你可以将内存使用量提高到最大值并继续提供服务请求,那么垃圾收集显然正常工作,因为在分配更多内存之前需要释放内存。
你可以尝试启动一个不同的进程来故意吸收更多的内存,然后再看看原始的node.js进程'垃圾收集似乎表现得更积极。