2015-04-01 50 views
0

的內存分配當我開始一個新的和的NodeJS型process.memoryUsage(),它顯示的NodeJS

> process.memoryUsage() { rss: 11296768, heapTotal: 7195904, heapUsed: 2964776 }

所以使用的NodeJS的11M內存和V8的堆使用它們的7M。

還有什麼消耗剩餘的11-7 = 4M內存,nodejs的C++部分? libuv? v8本身?

是否有任何方法或工具來查看內存分配?

ps:我不需要node-heap/node-memwatch來檢測v8堆中的內存。他們主要測量js項目(js文件)使用的內存。我想知道節點本身使用的內存。哪些部件使用剩餘的 4M,以及每個部件使用多少。

回答

1

V8每次運行垃圾收集器時都不壓縮堆。這意味着兩者之間可能存在未使用的空間。這裏有一個非常蹩腳的圖表來展示可能發生的事情。

------------------------------------------- 
|   |    |    | 
| used  | unused |  used | 
|   |    |    | 
------------------------------------------- 

所以總堆大小是分配給最後分配字節的第一個字節。 V8可能會在未來某個時候使用「未使用」的空間,但它並不需要。