2013-08-05 58 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設置爲相同的大小即可。