【发布时间】:2013-11-23 11:56:35
【问题描述】:
我正在尝试在ulimit -v 2000000 将虚拟内存限制为 2GB 的环境中使用 java,但出现内存错误。在此环境中运行 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?
【问题讨论】:
-
似乎系统已经消耗了大部分可用内存,Java 没有喘息的余地。当您提供更多呼吸空间时,它开始起作用的事实证明了这一点。所以是的 - 这是可能的,但当你没有实际可用的资源时就不行。
-
这不是问题。
top显示超过 7GB 的可用 RAM,我可以运行分配高达 2GB 内存的 python 和 C/C++ 程序。 -
您确定您使用的是
ulimit -v 2000000而不是ulimit -v 200000?
标签: java java-7 openjdk ulimit