Scala collection memory footprint characteristics

scala, scala-collections

Solution

Here is what I've found out by filling up those respective immutable sequences with 1,000,000 objects on 2.9.0. I had them all point to the same object to factor out the size of the content.

- `Array`: 1x (baseline 4,000,016 bytes on 32 bits; 8,000,024 on 64 bits)

- `Vector`: 1.17x

- `List`, `Queue`, `Stack`: 4x

- evaluated `Stream`: 10x

`System.gc` was called then triggered heap dump then opened in Eclipse MAT.

Based on that `Array` and `Vector` are pretty closed.

Problem

There is a handy page about performance characteristics of the Scala collection classes. Is there similar data on memory footprint? I have a situation where I'm concerned about memory use and would like to factor this in my choice of collection to use. For instance, between `Array[Array[T]]` and `Vector[Vector[T]]`.

Original source