Мне нужно запустить приложение с интенсивным использованием памяти Java, которое использует более 2 ГБ, но у меня возникают проблемы с увеличением максимального размера кучи. До сих пор я пробовал следующие подходы:
Установка параметра -Xmx, например -Xmx3000m. Этот подход не работает при создании JVM. Из того, что я искал, похоже, что -Xmx должен быть меньше 2 ГБ.
Использование параметра -XX: + AggressiveHeap . Когда я пробую этот подход, я получаю ошибку «Недостаточно памяти», которая сообщает, что размер кучи составляет 1273,4 МБ, хотя на моем компьютере 8 ГБ памяти.
Есть ли другой подход, с помощью которого я могу попытаться увеличить максимальный размер кучи JVM? Вот краткое изложение технических характеристик компьютера:
- ОС: 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)
java
jvm
jvm-arguments
Альсеу Коста
источник
источник
Ответы:
Получите 64-битную JVM от Oracle .
источник
Когда вы используете JVM в 32-битном режиме, максимальный размер кучи, который можно выделить, составляет 1280 МБ. Итак, если вы хотите выйти за рамки этого, вам нужно вызвать JVM в 64-режиме.
Вы можете использовать следующее:
где,
Вы можете настроить -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-битная куча Oracle: часто задаваемые вопросы
Цитата
Максимальный теоретический предел кучи для 32-разрядной JVM составляет 4G. Из-за различных дополнительных ограничений, таких как доступный своп, использование адресного пространства ядра, фрагментация памяти и накладные расходы виртуальной машины, на практике предел может быть намного ниже. В большинстве современных 32-разрядных систем Windows максимальный размер кучи составляет от 1,4 ГБ до 1,6 ГБ. В 32-разрядных ядрах Solaris адресное пространство ограничено 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 $0`/ApacheJMeter.jar "$@"
источник