2
我有這個簡單的HTTP服務器V8的NodeJS沒有做適當的垃圾收集
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以上。