v8 / node.js中的内部数组表示

时间:2012-04-02 13:58:48

标签: node.js memory memory-management v8

我为node.js写了一个小内存基准:http://pastebin.com/KfZ4Ucn4

它使用process.memoryUsage().heapUsed测量3种情况下的内存使用情况:

  1. 具有10个属性的对象数组,每个元素的不同属性名称
  2. 具有10个属性,相同属性名称
  3. 的对象数组
  4. 具有10个属性,相同属性名称的对象数组,表示为数组对象
  5. 案例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 }
      } ]
    

    任何线索?

1 个答案:

答案 0 :(得分:0)

我猜这与V8使用“隐藏类”来表示类似对象的方式有关,但是你所报告的内容似乎是脚印中非常显着的差异......

您可以在此处详细了解隐藏课程:https://developers.google.com/v8/design 虽然那篇文章似乎更关注速度而不是内存使用。