Ответ 1
Получите себе 64-битную JVM от Oracle.
Мне нужно запустить приложение с интенсивным использованием Java-памяти, которое использует более 2 ГБ, но у меня возникают проблемы с увеличением максимального размера кучи. До сих пор я пробовал следующие подходы:
Установка параметра -Xmx, например. -Xmx3000m. Эти подходы терпят неудачу при создании JVM. Из того, что я искал в googled, похоже, что -Xmx должен быть меньше 2 ГБ.
Используя параметр - XX: + AggressiveHeap. Когда я пробую этот подход, я получаю сообщение об ошибке "Недостаточно памяти", в котором говорится, что размер кучи составляет 1273,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)
Получите себе 64-битную JVM от Oracle.
Когда вы используете 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
Я считаю, что ограничение 2 ГБ для 32-разрядной Java. Я думал, что v1.6 всегда 64 бит, но попробуйте заставить режим 64 бит просто посмотреть: добавьте параметр -d64.
32-разрядная Java ограничена примерно 1,4 - 1,6 ГБ.
Цитата
Максимальный теоретический предел кучи для 32-разрядной JVM равен 4G. Из-за различных дополнительных ограничений, таких как доступный обмен, использование адресного пространства ядра, фрагментация памяти и накладные расходы VM, на практике предел может быть значительно ниже. В большинстве современных 32-битных систем Windows максимальный размер кучи будет варьироваться от 1,4 ГГц до 1,6 ГГц. В 32-битных ядрах Solaris адресное пространство ограничено 2G. В 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 "[email protected]"
У меня есть "похожие" проблемы с памятью, чтобы разобрать файл 400mb json через узел JSONReader.
я увеличил -Xmx12228m в knime.ini, но пространство с кучами, кажется, ограничено 5462 МБ
введите описание изображения здесь
мой ноутбук имеет 16 гб барана, так что этого должно быть достаточно, не так ли?
→ сведения об установке: knime_3.6.2\plugins/org.knime.binary.jre.win32.x86_64_1.8.0.152-01/jre/bin\server\jvm.dll
Спасибо,
ЧАС