Увеличение максимального размера кучи 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)
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 ГБ.
цитата
максимальный теоретический предел кучи для 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