如果我从Java命令行中省略-Xmxn选项,则使用默认值 . 根据Java documentation "the default value is chosen at runtime based on system configuration" .
哪些系统配置设置会影响默认值?
如果我从Java命令行中省略-Xmxn选项,则使用默认值 . 根据Java documentation "the default value is chosen at runtime based on system configuration" .
哪些系统配置设置会影响默认值?
7 回答
在Windows系统上,您可以使用以下命令查找运行应用程序的系统上的默认值 .
查找选项
MaxHeapSize
(对于-Xmx
)和InitialHeapSize
对于-Xms
.在Unix / Linux系统上,你可以做到
我相信结果输出是以字节为单位 .
根据Garbage Collector Ergonomics [Oracle]:
UPDATE:
正如Tom Anderson在评论中指出的那样,上面是服务器级机器 . 来自Ergonomics in the 5.0 JavaTM Virtual Machine:
这是用Java 6 update 18更改的 .
假设我们有超过1 GB的物理内存(这些天很常见),它总是物理内存的1/4 .
埃内斯托是对的 . 根据他发布的链接[1]:
[1] http://www.oracle.com/technetwork/java/javase/6u18-142093.html
Java 8 takes more than 1/6th of your physical memory for your Xmssize (Minimum HeapSize) and less than 1/4th of your physical memory for your -Xmxsize (Maximum HeapSize).
您可以通过以下方式检查 default Java heap size :
在 Windows :
在 Linux :
Your physical memory and your Java version.
看一下文档page
默认的最大堆大小是物理内存的一半,直到物理内存大小为192兆字节(MB),否则为物理内存的四分之一,物理内存大小为1千兆字节(GB) .
在32位JVM上,如果有4 GB或更多物理内存,则默认最大堆大小最多可达1 GB . 在64位JVM上,如果存在128 GB或更多物理内存,则默认最大堆大小最多可为32 GB
您可以使用标志 -Xms (初始堆大小)和 -Xmx (最大堆大小)指定初始和最大堆大小 . 如果您知道应用程序需要多少堆才能正常工作,可以将 -Xms 和 -Xmx 设置为相同的值
对于IBM JVM,命令如下:
有关IBM SDK for Java 8的更多信息 - http://www-01.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.lnx.80.doc/diag/appendixes/defaults.html?lang=en