Я должен выполнить Java интенсивно использующее память приложение, которое использует больше чем 2 ГБ, но у меня есть проблемы для увеличения размера максимума "кучи". До сих пор я попробовал следующие подходы:
Установка-Xmx параметра, например,-Xmx3000m. Это приближается к сбоям при создании JVM. Из того, что я погуглил, похоже, что-Xmx должен составить меньше чем 2 ГБ.
Используя-XX: + опция AggressiveHeap. Когда я пробую этот подход, я получаю 'Недостаточно памяти' ошибка, которая говорит, что размер "кучи" составляет 1 273,4 МБ, даже при том, что мой компьютер имеет 8 ГБ памяти.
Есть ли другой подход, что я могу попытаться увеличить максимальный размер "кучи" JVM? Вот сводка компьютерных спецификаций:
java version "1.6.0_18" Java(TM) SE Runtime Environment (build 1.6.0_18-b07) Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing)
Я считаю, что ограничение в 2 ГБ предназначено для 32-разрядной версии Java. Я думал, что v1.6 всегда был 64-битным, но попробуйте принудительно включить 64-битный режим, чтобы увидеть: добавьте параметр -d64.
Когда вы используете JVM в 32-битном режиме, максимальный размер кучи, которая может быть выделена, составляет 1280 МБ. Поэтому, если вы хотите выйти за эти пределы, вам нужно вызвать JVM в 64-режиме.
Вы можете использовать следующее:
$ java -d64 -Xms512m -Xmx4g HelloWorld
где,
Вы можете настроить -Xms и -Xmx в соответствии с вашими требованиями (YMMV)
Очень хороший ресурс по настройке производительности JVM, на который стоит обратить внимание: http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html