Scala характеристики памяти памяти
Существует удобная страница о характеристиках производительности классов коллекции Scala. Имеются ли подобные данные по памяти?
У меня есть ситуация, когда я обеспокоен использованием памяти и хотел бы включить это в мой выбор коллекции. Например, между Array[Array[T]]
и Vector[Vector[T]]
.
Ответы
Ответ 1
Вот что я узнал, заполнив эти соответствующие неизменяемые последовательности 1 000 000 объектов на 2.9.0. Я все указывал на один и тот же объект, чтобы указать размер содержимого.
-
Array
: 1x (базовый 4,000,016 байт на 32 бита, 8 000 024 на 64 бита)
-
Vector
: 1.17x
-
List
, Queue
, Stack
: 4x
- оценено
Stream
: 10x
System.gc
был вызван, а затем вызван сброс кучи, а затем открыт в Eclipse MAT.
На основании этого Array
и Vector
закрыты.
Ответ 2
Вы можете начать с простого поколения нескольких многомерных векторов и массивов разного размера:
val vMin = Vector.fill (10 , 10)(9)
val vMed = Vector.fill (1000, 10)(9)
val aMed = Array.fill (1000, 10)(9)
10 массивов из 10 массивов интс со значением 9, 1000 таких массивов, 1000 таких векторов...
Чтобы измерить размер, вы можете использовать
$JAVA_HOME/bin/jvisualvm