Java Process消耗超过-Xmx值的内存

时间:2011-10-10 10:52:44

标签: java jvm

JacorB通知服务的JVM(java 1.6)使用超出-Xmx值的内存,设置为240MB。

Windows任务管理器中的java exe跨越900MB Privatebytes,但My YourKit(评估版)显示内存消耗为28 MB。

任何人都有想法,为什么java exe交叉-Xmx值

谢谢, Sharat Bhat

3 个答案:

答案 0 :(得分:3)

-Xmx确定允许您的进程使用的 Java堆的最大大小。

"Private Bytes"可以(并且确实)包含JVM进程使用但不属于Java堆的内存。

因此,您不应期望“私有字节”测量的进程内存使用量低于-Xmx设置。

最后,我希望YourKit对堆使用情况的评估非常准确。

答案 1 :(得分:1)

你也设置了-Xss吗?否则堆栈不受限制。

答案 2 :(得分:0)

-Xmx设置最大堆空间。但Java为其他空间分配内存:permgen空间,包含类定义,每个线程的堆栈,在本机代码中分配的内存等。