有大量可用内存,但 Java 无法启动 (SunOS 5.10)

有大量可用内存,但 Java 无法启动 (SunOS 5.10)

虚拟机状态给出:

swap        free
37489684    110178592

在尝试运行时我仍然遇到问题爪哇10g 堆的进程:

> java -Xmx10g -Xms10g -d64 HelloWorldApp

Error occurred during initialization of VM
Could not reserve enough space for object heap

为什么会发生这种情况以及如何解决该问题?

更新。输出ulimit -a:

core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
open files                      (-n) 256
pipe size            (512 bytes, -p) 10
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 25525
virtual memory          (kbytes, -v) unlimited

答案1

您可以有可用的 RAM,但仍然用完交换空间。我相信这可能就是你正在经历的。调查与swap -s.

作为第二个想法,问题可能是由于没有足够的事实连续的内存可用,尽管如果操作系统无法找到 10 GB 连续的可用内存(当可用内存似乎超过 100 GB 时),这似乎相当奇怪。

答案2

您的交换区域非常小。据报告空闲的 RAM 的很大一部分实际上目前无法使用,因为它充当其他程序内存预留的后备存储。只需添加一些交换,它可以是一个简单的文件,您就可以启动您的 JVM。

答案3

尝试使用以下方法:

java -Xms512m -Xmx512m -d64 HelloWorldApp

或者

java -Xms1024m -Xmx1024m -d64 HelloWorldApp

也可能是因为太高了。

相关内容