2013-08-05 60 views
2

在这里有很多关于“如何增加堆大小”的问题,但我想了解这些设置如何实际影响Java应用程序的内存消耗(Eclipse IDE在我的情况下,但我想这没关系)。了解JVM堆大小(使用Eclipse时)

我的JVM启动时用这些参数:

-Xms512m 
-Xmx1024m 

,所以我期望的是,当一些内存要求苛刻的执行,堆的大小会达到1024 MB。然而,我只看到Eclipse最多分配700-800 MB

Eclipse heap size

(如果我理解正确了吧,黄色部分是当前分配,整个酒吧是最大的分配,并且有一定的“标记”,我不知道它是什么) 。

当我开始汇编一个大型项目时,我定期看到黄色条上升,达到整个条的90%,然后回落到大约200-300 MB。那不利用最大允许的1024MB,是吗?

如果有人能够向我解释这种行为并且可能如何改变它,那将会很棒。

顺便说一句,我的Eclipse是64位版本的64位JVM(如果有的话)(1024位限制对于32位应该也可以)。

回答

3

Xmx是一个硬限制。如果GC能够在达到极限值之前清除对象/降低内存消耗,则不会达到最大值。

如果您有某些原因需要1GB的内存消耗,只需将Xms和Xmx设置为相同的大小即可。