В некоторых местах я видел объявление, похожее на:
«Компилятор Scala использует массивы Java, примитивные типы и нативную арифметику, где это возможно, в скомпилированном коде» (Программирование в книге Scala).Но на практике я не вижу этого, например, в следующем коде тип scala использует больше памяти, чем тип java (который я рассчитал с использованием методов totalMemory и freeMemory):
long[] la = new Array[java.lang.Long](1024 * 1024);
for(i <- 0 until la.length)
la(i) = new java.lang.Long(0);
val La = new Array[Long](1024 * 1024);
for(i <- 0 until La.length)
La(i) = 0l;
mem_used(java long): >> 28.811M
mem_used (scala long): >> 36.811M
Я понимаю, что scala У любого типа есть дополнительные издержки, но где происходит оптимизация?