2

这里有很多关于“如何增加堆大小”的问题,但我想了解这些设置实际上如何影响 Java 应用程序的内存消耗(在我的例子中是 Eclipse IDE,但我想这并不重要)。

我的 JVM 使用以下参数启动:

-Xms512m
-Xmx1024m

所以我希望当执行需要内存的东西时,堆大小将上升到 1024 MB。但是,我只看到 Eclipse 最多分配大约 700-800 MB

Eclipse 堆大小

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

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

如果有人可以向我解释这种行为以及如何改变它,那就太好了。

顺便说一句,如果这很重要,我的 Eclipse 是带有 64 位 JVM 的 64 位版本(不过,32 位的 1024 限制也应该没问题)。

4

1 回答 1

3

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

如果您出于某种原因需要消耗 1GB 内存,只需将 Xms 和 Xmx 设置为相同大小。

于 2013-08-08T07:49:15.043 回答