Java и виртуальная память ulimit

Я пытаюсь использовать java в среде, где виртуальная память ограничена 2 ГБ на ulimit -v 2000000, но я получаю ошибки памяти. Запуск java -version в этой среде дает:

$ java -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

Независимо от того, насколько низко я установил -Xmx, я не могу заставить Java работать в этой среде. Однако, если ulimit -v установлено на 2,5 ГБ, то я могу установить -Xmx на 250 м, но не выше.

$ java -Xmx250m -version
java version "1.7.0_19"
OpenJDK Runtime Environment (rhel-2.3.9.1.el6_4-x86_64)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)

$ java -Xmx251m -version
#
# There is insufficient memory for the Java Runtime Environment to continue.
# pthread_getattr_np
java version "1.7.0_19"
OpenJDK Runtime Environment (rhel-2.3.9.1.el6_4-x86_64)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)# An error report file with more information is saved as:
# ~/hs_err_pid12079.log

Можно ли использовать java в среде, где ulimit используется для ограничения виртуальной памяти?


person Barry Hurley    schedule 11.11.2013    source источник
comment
Похоже, что система уже потребляет большую часть доступной памяти, а Java не хватает места для дыхания. Тот факт, что он начинает работать, когда вы предоставляете больше передышки, доказывает это. Так что да - это возможно, но не тогда, когда у вас нет доступных ресурсов.   -  person Gimby    schedule 11.11.2013
comment
Это не проблема. top показывает более 7 ГБ свободной оперативной памяти, и я могу запускать программы на Python и C/C++, которые выделяют память до 2 ГБ.   -  person Barry Hurley    schedule 11.11.2013
comment
Вы уверены, что использовали ulimit -v 2000000, а не ulimit -v 200000?   -  person Holger    schedule 11.11.2013


Ответы (1)


Это хорошо известная гигантская ошибка во всех доступных JVM (oracle или openjdk, версии 6,7,8). Сообщается здесь: https://bugs.launchpad.net/ubuntu/+source/openjdk-7/+bug/1241926 https://bugs.openjdk.java.net/browse/JDK-8071445

К сожалению, без решения разработчиков Java. Решение: отчаянно экспериментируйте с различными опциями Java или прекратите использовать Java и приложения на основе Java :-(

person Martin    schedule 15.07.2015