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

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

它使用process.memoryUsage().heapUsed来测量内存使用情况process.memoryUsage().heapUsed for 3 cases:

  1. 具有10个属性的对象数组,每个元素的属性名称不同
  2. 具有10个属性的对象数组,具有相同的属性名称
  3. 具有10个属性,相同属性名称的对象数组,表示为数组对象

情况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 } } ] 

任何线索?

我猜测,这与V8使用“隐藏类”来表示类似对象的方式有关,但是您所报告的脚印似乎在脚印方面有相当大的差异。

您可以在这里阅读有关隐藏课程的更多信息: https : //developers.google.com/v8/design,尽pipe该文章似乎更关注速度而非内存使用。