Характеристики памяти в коллекции Scala

Есть удобная страница с характеристиками производительности классов коллекции Scala. Есть ли аналогичные данные об объеме памяти?

У меня есть ситуация, когда я обеспокоен использованием памяти и хотел бы учесть это при выборе коллекции для использования. Например, между Array[Array[T]] а также Vector[Vector[T]],

2 ответа

Вот что я узнал, заполнив соответствующие неизменяемые последовательности 1 000 000 объектов на 2.9.0. Я заставил их всех указать на один и тот же объект, чтобы выделить размер содержимого.

  • Array: 1x (базовая длина 4000 016 байт на 32 бита; 8 000 024 на 64 бита)
  • Vector: 1.17x
  • List, Queue, Stack: 4x
  • оценивали Stream: 10x

System.gc был вызван, затем вызвал дамп кучи, затем открыл в Eclipse MAT.

На основании этого Array а также Vector довольно закрыты.

Вы можете начать с простого создания нескольких многомерных векторов и массивов разного размера:

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 
Другие вопросы по тегам