2012-04-02 23 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 尽管该文章似乎更关注速度而非内存使用情况。