5

仮想メモリが 2GB に制限されている環境で Java を使用しようとしていますが、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.5GB に設定されている場合-Xmx、250m に設定できますが、それ以上には設定できません。

$ 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

ulimit を使用して仮想メモリを制限している環境で Java を使用することはできますか?

4

1 に答える 1

3

これは、利用可能なすべての 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 ベースのアプリケーションの使用を停止します :-(

于 2015-07-15T13:26:24.187 に答える