Почему Groovy (версия 1.8.0) использует гораздо больше памяти в 64-битном режиме?Насколько я понимаю, да, 64-битный использует более крупные указатели и иногда может занимать вдвое больше памяти, но Groovy может занять до 2000% больше памяти в 64-битном режиме по сравнению с 32-битным.
Просто простой тест, который я имею нижеможет объяснить что-то.Этот тест (код ниже) предназначен не для измерения скорости, а лишь для того, чтобы получить пример использования памяти в Groovy для различных установок JVM.
При запуске приведенного ниже кода скомпилируйте и запустите с java.exe, а неgroovy.exe, он использует 17 МБ памяти.При выполнении точно такого же кода на 64-битной JVM он потребляет 430 МБ памяти и даже с CompressedOops он использует более 300 МБ.
Просто быстрое сравнение с Java, хотя я все еще ожидаю, что Groovy будет использовать немного больше памятичем родная Java.Тот же код, только что модифицированный для чистой Java, занимает 8 МБ памяти в 64-битном режиме и 4 МБ в 32-битном режиме.
Есть ли ошибка в Groovy?Или я что-то упустил?
class MemoryTest {
static main(args) {
double result = 0.00
long startTime = System.currentTimeMillis()
long endTime = System.currentTimeMillis()
for (warmup in 1..5) {
result = 0.00
startTime = System.currentTimeMillis()
for (i in 1..1000000) {
result += (34.673*i)/(Math.sqrt(31.92**42.42))
}
endTime = System.currentTimeMillis()
}
println "Result: ${result}"
println "Time taken: ${(endTime-startTime)/1000}"
}
}