非常大的堆大小,但小的使用内存

Jas*_*per 1 java memory heap garbage-collection

我在我的应用程序中看到非常大的堆大小,但使用的内存非常小:

堆大小:10 GB +,已用内存:500 MB

这解释了什么?为什么堆大小不会减少. 记忆图http://i48.tinypic.com/b5423a.png

我的java内存参数如下:

-Xms8448m -Xmx12544m -XX:PermSize = 192m -XX:MaxPermSize = 256m -XX:+ UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction = 60

请指教,为什么这种奇怪的行为.我可以看到在图中垃圾收集使用过的内存,但堆内存有什么问题?

Kep*_*pil 5

您的参数的初始堆大小

-Xms8448m
Run Code Online (Sandbox Code Playgroud)

超过8GB.而且,

-Xmx12544m
Run Code Online (Sandbox Code Playgroud)

赋予JVM权限,允许它增长到超过12GB,它可能会这样做,如果内存可用,它永远不会释放它,并且它认为这是最好的堆大小.规范中没有任何内容表明JVM应该尽量保持堆大小.