Scala收集内存占用特征

时间:2011-06-05 13:31:13

标签: scala scala-collections

有一个关于performance characteristics of the Scala collection classes的方便页面。是否有关于内存占用的类似数据?

我有一种情况,我担心内存使用,并希望在我选择使用的集合中考虑这一点。例如,在Array[Array[T]]Vector[Vector[T]]之间。

2 个答案:

答案 0 :(得分:17)

这是我通过在2.9.0上用1,000,000个对象填充那些相应的不可变序列而发现的。我让他们都指向同一个对象来分解内容的大小。

  • Array:1x (32位基线4,000,016字节; 64位8,000,024字节)
  • Vector:1.17x
  • ListQueueStack:4x
  • 评估Stream:10x
然后调用

System.gc然后触发堆转储然后在Eclipse MAT中打开。

基于ArrayVector非常关闭。

答案 1 :(得分:1)

您可以从简单生成多个不同大小的多维多维向量和数组开始:

val vMin = Vector.fill (10  , 10)(9)
val vMed = Vector.fill (1000, 10)(9)
val aMed =  Array.fill (1000, 10)(9)

10个阵列的10个Ints值9,1000个这样的阵列,1000个这样的矢量......

要测量尺寸,您可以使用

$JAVA_HOME/bin/jvisualvm