如何确定默认的最大 Java 堆大小?
2022-08-31 04:25:25
在 Windows 上,可以使用以下命令找出运行应用程序的系统上的默认值。
java -XX:+PrintFlagsFinal -version | findstr HeapSize
查找选项 (为 ) 和 .MaxHeapSize
-Xmx
InitialHeapSize
-Xms
在Unix/Linux系统上,你可以做到
java -XX:+PrintFlagsFinal -version | grep HeapSize
我相信生成的输出以字节为单位。
对于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