有一个关于performance characteristics of the Scala collection classes的方便页面。是否有关于内存占用的类似数据?
我有一种情况,我担心内存使用,并希望在我选择使用的集合中考虑这一点。例如,在Array[Array[T]]
和Vector[Vector[T]]
之间。
答案 0 :(得分:17)
这是我通过在2.9.0上用1,000,000个对象填充那些相应的不可变序列而发现的。我让他们都指向同一个对象来分解内容的大小。
Array
:1x (32位基线4,000,016字节; 64位8,000,024字节) Vector
:1.17x List
,Queue
,Stack
:4x Stream
:10x System.gc
然后触发堆转储然后在Eclipse MAT中打开。
基于Array
和Vector
非常关闭。
答案 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