2012-04-02 22 views
2

我寫node.js的一個小的存儲器基準:http://pastebin.com/KfZ4Ucn4內部數組表達/ Node.js的

它測量利用process.memoryUsage().heapUsed爲3案件內存使用情況:對象10種性質

  1. 陣列,每個元素的不同屬性名稱
  2. 具有10個屬性,相同屬性名稱的對象數組
  3. 具有10個屬性,相同屬性名稱的對象數組,表示爲數組對象

對於情況1,情況1開銷爲1300字節,情況2爲300字節,情況3爲150字節。同樣只有情況1垃圾收集,而在後一種情況下,內存使用情況不會下降。

這些影響是否有任何解釋或文檔?我試圖優化內存使用對象的對象數組,如

[ { 
    foo : { bar : 1, baz : 2 } 
    , bar : { bar : 2, baz : 7 } 
    } 
, { 
    foo : { bar : 1, baz : 2 } 
    , bar : { bar : 2, baz : 7 } 
    } ] 

任何線索?

回答

0

我猜,這已經與V8採用「隱性課程」來表示相似的對象的方式來做些什麼,而要報告似乎是在一個腳印非常顯着的差異...

你可以在這裏閱讀有關隱藏課程的更多信息:https://developers.google.com/v8/design 儘管該文章似乎更關注速度而非內存使用情況。