如何确定默认的最大 Java 堆大小?

2022-08-31 04:25:25

如果我从Java命令行中省略该选项,则将使用默认值。根据 Java 文档-Xmxn

“默认值是在运行时根据系统配置选择的”

哪些系统配置设置会影响默认值?


答案 1

在 Windows 上,可以使用以下命令找出运行应用程序的系统上的默认值。

java -XX:+PrintFlagsFinal -version | findstr HeapSize

查找选项 (为 ) 和 .MaxHeapSize-XmxInitialHeapSize-Xms

在Unix/Linux系统上,你可以做到

java -XX:+PrintFlagsFinal -version | grep HeapSize

我相信生成的输出以字节为单位。


答案 2

对于Java SE 5:根据垃圾回收器人体工程学[Oracle]

初始堆大小:

大于计算机上计算机物理内存的 1/64 或某个合理的最小值。在 J2SE 5.0 之前,缺省的初始堆大小是合理的最小值,它因平台而异。您可以使用 -Xms 命令行选项覆盖此缺省值。

最大堆大小:

小于物理内存的 1/4 或 1GB。在 J2SE 5.0 之前,缺省的最大堆大小为 64MB。您可以使用 -Xmx 命令行选项覆盖此缺省值。

更新:

正如Tom Anderson在他的评论中指出的那样,上述内容适用于服务器级机器。来自 5.0 JavaTM 虚拟机中的人体工程学

在 J2SE 平台 V5.0 中,一类称为服务器级计算机的计算机被定义为具有以下特征的机器

  • 2 个或更多物理处理器
  • 2 个或更多 GB 的物理内存

运行 Windows 操作系统版本的 32 位平台除外。在所有其他平台上,默认值与版本 1.4.2 的默认值相同。

在 J2SE 平台 1.4.2 版中,缺省情况下,进行了以下选择

  • 初始堆大小为 4 MB
  • 最大堆大小为 64 MB

推荐