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

如果我从Java命令行省略-Xmxn选项,则使用默认值。 根据Java文档“默认值是在运行时根据系统配置选择的”。

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


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

java -XX:+ PrintFlagsFinal -version | findstr HeapSize

-Xms查找选项MaxHeapSize (对于-Xmx )和InitialHeapSize

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

java -XX:+ PrintFlagsFinal -version | grep HeapSize

我相信结果输出是以字节为单位。


根据垃圾收集器人体工程学[甲骨文]:

初始堆大小:

机器物理内存的1/64更大或合理的最小值。 在J2SE 5.0之前,默认的初始堆大小是一个合理的最小值,因平台而异。 您可以使用-Xms命令行选项覆盖此默认值。

最大堆大小:

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

更新:

正如Tom Anderson在他的评论中指出的那样,以上是针对服务器级机器的。 从5.0 JavaTM虚拟机中的人机工程学:

在J2SE平台版本5.0中,被称为服务器级机器的一类机器已被定义为机器

  • 2个或更多物理处理器
  • 2或更多GB的物理内存
  • 除了运行Windows操作系统版本的32位平台之外。 在所有其他平台上,默认值与版本1.4.2的默认值相同。

    在J2SE平台版本1.4.2中,默认情况下进行了以下选择

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

  • 这随Java 6更新18而改变。

    假设我们拥有超过1 GB的物理内存(这些日子相当普遍),它总是物理内存的四分之一。

    链接地址: http://www.djcxy.com/p/73023.html

    上一篇: How is the default Java heap size determined?

    下一篇: View array in Visual Studio debugger?