Увеличение максимального размера кучи JVM для приложений с интенсивной памятью



Мне нужно запустить приложение с интенсивной памятью Java, которое использует более 2 ГБ, но у меня возникли проблемы с увеличением максимального размера кучи. До сих пор я пробовал следующие подходы:




  • установка параметра-Xmx, например -Xmx3000m. этот подход завершается неудачей при создании JVM. Из того, что я погуглил, это выглядит так-Xmx должен быть меньше 2 ГБ.


  • С помощью - XX: + AggressiveHeap option. Когда я попробую это подход я получаю ошибку "недостаточно памяти", которая говорит, что размер кучи составляет 1273,4 МБ, хотя мой компьютер имеет 8 ГБ памяти.



есть ли другой подход, который я могу попытаться увеличить максимальный размер кучи JVM? Вот краткий итог описания computer specs:




  • ОС: Windows 7 (64 бит)

  • Процессор: Intel Core i7 (2,66 ГГц)

  • память: 8 ГБ

  • java -версия:



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)

839   5  

5 ответов:

получите себе 64-битную JVM от Oracle.

при использовании JVM в 32-разрядном режиме максимальный размер кучи, который может быть выделен, составляет 1280 МБ. Итак, если вы хотите выйти за рамки этого, вам нужно вызвать JVM в 64-режиме.

вы можете использовать следующие:

$ java -d64 -Xms512m -Xmx4g HelloWorld

здесь

  • - d64: позволит 64-бит JVM
  • - Xms512m: установит начальный размер кучи как 512 МБ
  • - Xmx4g: установит максимальный размер кучи как 4 ГБ

вы можете настроить-Xms и-Xmx в соответствии с вами требования (YMMV)

очень хороший ресурс по настройке производительности JVM, который может потребоваться изучить:http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html

Я считаю, что предел 2 ГБ для 32-разрядной Java. Я думал, что v1.6 всегда был 64-битным, но попробуйте заставить 64-битный режим просто посмотреть: добавьте опцию-d64.

32-разрядная Java ограничена приблизительно 1,4-1,6 ГБ.

Oracle 32 битная куча FAQ

цитата

максимальный теоретический предел кучи для 32-разрядной JVM составляет 4G. из-за различных дополнительных ограничений, таких как доступная подкачка, использование адресного пространства ядра, фрагментация памяти и накладные расходы VM, на практике предел может быть намного ниже. На большинстве современных 32-битных систем Windows максимальный размер кучи будет варьироваться от 1.4 G до 1.6 G. На 32-битный Солярис ядра в адресное пространство ограничено 2 ГБ. На 64-битных операционных систем под управлением 32-разрядной виртуальной машины, максимальный размер кучи может быть выше, приближаясь 4G на многих системах Solaris.

ниже conf работает для меня:

JAVA_HOME=/JDK1.7.51-64/jdk1.7.0_51/
PATH=/JDK1.7.51-64/jdk1.7.0_51/bin:$PATH
export PATH
export JAVA_HOME

JVM_ARGS="-d64 -Xms1024m -Xmx15360m -server"

/JDK1.7.51-64/jdk1.7.0_51/bin/java $JVM_ARGS -jar `dirname `/ApacheJMeter.jar "$@"

Comments

    Ничего не найдено.