0

我的 Solaris 服务器有问题。当我启动一个内存受限的 Sun Java 进程时,它需要两倍以上的资源。

例如,我的服务器上有 64 Go 内存。1 在 Linux 上,其他在 Solaris 上。我在所有服务器上运行相同的软件(仅 java)。

当服务器启动时,它们占用了 400Mb 到 1.2Gb 的 RAM。我启动了我的 java 进程(每个 java 进程通常在 4 到 16go 之间)并且我不能运行超过 32 Gb 的 Xmx 和 Xmx 值定义。我遇到了这种错误:

> /java -d64 -Xms8G -Xmx8G -version
Error occurred during initialization of VM
Could not reserve enough space for object heap

正如我们在这里看到的,我有很多保留的内存,它是由 java 进程创建的:

> swap -s
total: 22303112k bytes allocated + 33845592k reserved = 56148704k used, 704828k available

一旦我一个一个地杀死他们,我就恢复了我的保留空间并可以发射其他人。但实际上我不能使用超过一半的内存。

有人知道如何解决这个问题吗?

谢谢

4

1 回答 1

1

我认为问题在于 Linux 过度提交内存分配,而 Solaris 确保您分配的内容适合虚拟内存。如果您认为这是 Linux 的优势,那么当 Linux OOM 杀手在最糟糕的阶段随机杀死您的关键任务应用程序时,您可能会重新考虑它。

要解决此问题,只需向 Solaris 添加更多交换空间。

于 2010-01-15T00:44:05.093 回答