如何确定默认的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中,被称为服务器级机器的一类机器已被定义为机器
除了运行Windows操作系统版本的32位平台之外。 在所有其他平台上,默认值与版本1.4.2的默认值相同。
在J2SE平台版本1.4.2中,默认情况下进行了以下选择
这随Java 6更新18而改变。
假设我们拥有超过1 GB的物理内存(这些日子相当普遍),它总是物理内存的四分之一。
链接地址: http://www.djcxy.com/p/73023.html