Максимальный размер кучи Java для 32-разрядной JVM в 64-разрядной ОС - PullRequest
103 голосов
/ 16 сентября 2009

Вопрос не в максимальном размере кучи в 32-битной ОС, учитывая, что максимальный размер адресуемой памяти в 32-битных ОС составляет 4 ГБ, а максимальный размер кучи JVM зависит от того, сколько может быть свободной свободной памяти. зарезервирован.

Меня больше интересует знание максимального (теоретического и практически достижимого) размера кучи для 32-разрядной JVM, работающей в 64-разрядной ОС. В основном, я смотрю ответы, похожие на цифры в связанном вопросе на SO .

Что касается того, почему вместо 64-битной используется 32-битная JVM, причина не в технической, а в административной / бюрократической - вероятно, уже слишком поздно устанавливать 64-битную JVM в производственную среду.

Ответы [ 16 ]

2 голосов
/ 02 декабря 2009

На Solaris ограничение было около 3,5 ГБ с Solaris 2.5. (около 10 лет назад)

1 голос
/ 06 сентября 2012

У меня были те же проблемы с JVM, которые использует App Inventor для Android Blocks Editor. Он устанавливает кучу на 925 м макс. Этого недостаточно, но я не мог установить его более чем на 1200 м, в зависимости от различных случайных факторов на моей машине.

Я скачал Nightly, бета-64-битный браузер от Firefox, а также 64-битную версию JAVA 7.

Я еще не нашел свой новый предел кучи, но я только что открыл JVM с размером кучи 5900m . Нет проблем!

Я использую 64-разрядную версию Win 7 на компьютере с 24 ГБ ОЗУ.

0 голосов
/ 24 ноября 2016

Теоретический 4 ГБ, но на практике (для IBM JVM):

Win 2k8 64, IBM Websphere Application Server 8.5.5 32bit

C:\IBM\WebSphere\AppServer\bin>managesdk.bat -listAvailable -verbose CWSDK1003I: Доступные SDK: CWSDK1005I: Имя SDK: 1.6_32 - com.ibm.websphere.sdk.version.1.6_32=1.6 - com.ibm.websphere.sdk.bits.1.6_32=32 - com.ibm.websphere.sdk.location.1.6_32=${WAS_INSTALL_ROOT}/java - com.ibm.websphere.sdk.platform.1.6_32=windows - com.ibm.websphere.sdk.architecture.1.6_32=x86_32 - com.ibm.websphere.sdk.nativeLibPath.1.6_32=${WAS_INSTALL_ROOT}/lib/native/win /x86_32/ CWSDK1001I: Задача managesdk выполнена успешно. C:\IBM\WebSphere\AppServer\java\bin>java -Xmx2036 MaxMemory JVMJ9GC017E -Xmx слишком мала, должна быть не меньше 1 M байт JVMJ9VM015W Ошибка инициализации для библиотеки j9gc26(2): Не удалось инициализи ровать Could not create the Java virtual machine. C:\IBM\WebSphere\AppServer\java\bin>java -Xmx2047M MaxMemory Total Memory: 4194304 (4.0 MiB) Max Memory: 2146435072 (2047.0 MiB) Free Memory: 3064536 (2.9225692749023438 MiB) C:\IBM\WebSphere\AppServer\java\bin>java -Xmx2048M MaxMemory JVMJ9VM015W Ошибка инициализации для библиотеки j9gc26(2): Не удалось создать эк земпляр кучи; запрошено 2G Could not create the Java virtual machine.

RHEL 6.4 64, IBM Websphere Application Server 8.5.5 32-битный

[bin]./java -Xmx3791M MaxMemory Total Memory: 4194304 (4.0 MiB) Max Memory: 3975151616 (3791.0 MiB) Free Memory: 3232992 (3.083221435546875 MiB) [root@nagios1p bin]# ./java -Xmx3793M MaxMemory Total Memory: 4194304 (4.0 MiB) Max Memory: 3977248768 (3793.0 MiB) Free Memory: 3232992 (3.083221435546875 MiB) [bin]# /opt/IBM/WebSphere/AppServer/bin/managesdk.sh -listAvailable -verbose CWSDK1003I: Available SDKs : CWSDK1005I: SDK name: 1.6_32 - com.ibm.websphere.sdk.version.1.6_32=1.6 - com.ibm.websphere.sdk.bits.1.6_32=32 - com.ibm.websphere.sdk.location.1.6_32=${WAS_INSTALL_ROOT}/java - com.ibm.websphere.sdk.platform.1.6_32=linux - com.ibm.websphere.sdk.architecture.1.6_32=x86_32 -com.ibm.websphere.sdk.nativeLibPath.1.6_32=${WAS_INSTALL_ROOT}/lib/native/linux/x86_32/ CWSDK1001I: Successfully performed the requested managesdk task.

0 голосов
/ 05 февраля 2015

еще один момент для горячей точки 32-битной JVM: - собственная емкость кучи = 4 гигабайта - куча Java - PermGen;

Это может быть особенно сложно для 32-битной JVM, поскольку Java Heap и native Heap находятся в гонке. чем больше ваша куча Java, тем меньше собственная куча. Попытка настроить большую кучу для 32-битной виртуальной машины например, 2,5 ГБ + увеличивает риск нативной ошибки OutOfMemoryError в зависимости от области применения вашего приложения, количество потоков и т. д.

0 голосов
/ 16 мая 2012

Это тяжелая настройка, но вы можете получить кучу 3 ГБ.

http://www.microsofttranslator.com/bv.aspx?from=&to=en&a=http://forall.ru-board.com/egor23/online/FAQ/Virtual_Memory/Limits_Virtual_Memory.html

0 голосов
/ 10 октября 2009

Я пытался установить размер кучи до 2200M на 32-битной машине Linux, и JVM работала нормально. JVM не запускалась, когда я установил его на 2300M.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...