为什么Solaris上的Sun Java需要两倍以上的RSS内存?

时间:2010-01-14 11:37:19

标签: java memory solaris sun

我的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

一旦我一个接一个地杀死它们,我就会恢复我的预留空间并可以发射其他空间。但实际上我不能使用超过一半的记忆。

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

由于

1 个答案:

答案 0 :(得分:1)

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

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