2014-03-19 81 views
6

我有一個靜態ExpressJS服務器這樣的:的NodeJS/ExpressJS內存泄漏

var express = require("express"), 
    app = express(); 

app.use(express.static(__dirname)); 

app.listen(1050); 

當我啓動服務器,它採用V8堆20MB。如果我每秒刷新一次頁面,則使用的堆會不斷增長。 4小時後,它使用了40MB的v8堆。總的v8堆增加到80MB,RSS(進程使用的總內存)增加到130MB。

爲什麼這個簡單而靜態的服務器使用如此之多的內存?這似乎是一個內存泄漏。如果我不停止頁面重新加載,使用的內存不斷增長。

如果像這樣的簡單的靜態服務器使用太多內存,就不可能做大型項目。

版本的NodeJS:v0.10.21 ExpressJS版本:3.3.5

編輯:我注意到,它與一的NodeJS問題,因爲我試圖節點靜態的,而不是表達,並同時使用/總V8堆保持不變,nodejs使用的RSS內存繼續增長。

屏幕:
https://www.dropbox.com/s/4j5qs3rv2549dix/Screenshot%202014-03-20%2014.06.57.png https://www.dropbox.com/s/0c30ou8l3rv2081/Screenshot%202014-03-20%2014.07.54.png https://www.dropbox.com/s/5be1isk4v70qj8g/Screenshot%202014-03-20%2014.08.10.png
(在13:48開始)

+0

我沒有看到任何類似的東西(更新版本/ Ubuntu)。 –

+0

你如何做你的查詢?你關閉它們嗎? –

+0

「查詢」是什麼意思?這是一個靜態網站,服務器只發送靜態html文件,我們沒有SQL服務器。注意:我有Debian。 – angelocala94

回答

3

不知道,如果你仍然需要一個答案,但生病後爲別人的誰可能是具有相同的問題。

我有這個同樣的確切的問題,並通過使用固定它:

--max-old-space-size 5 

這限制了多少內存一直保持到它被通過GC刪除。