Подтвердить что ты не робот

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

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

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

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

Есть ли другой подход, который я могу попытаться увеличить максимальный размер кучи JVM? Здесь приведено краткое описание компьютерных спецификаций:

  • ОС: Windows 7 (64 бит)
  • Процессор: Intel Core i7 (2.66 ГГц)
  • Память: 8 ГБ
  • java -version:
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)
4b9b3361

Ответ 1

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

Ответ 2

Когда вы используете 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

Ответ 3

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

Ответ 4

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

Oracle 32-разрядная куча FAQ

Цитата

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

Ответ 5

Ниже 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]"

Ответ 6

У меня есть "похожие" проблемы с памятью, чтобы разобрать файл 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

Спасибо,

ЧАС