Runtime.maxMemory()和-Xmx

我期待Runtime.maxMemory()完全返回-Xmx,但它返回一个较低的值。 那它又回归了什么?

-Xmx标志的解释取决于VM。 某些VM(包括HotSpot)会强制执行此选项有效值的下限。 CCC提案不应该以这种方式提到-Xmx标志。

参考

返回Java虚拟机将尝试使用的最大内存量,jvm可能不会将您已定义为-Xmx参数的所有内存仅用于堆。

-Xmxn

指定内存分配池的最大大小(以字节为单位)。 此值必须是1024的倍数大于2MB。 附加字母k或K表示千字节,或m或M表示兆字节。 默认值为64MB。 此值的上限在Solaris 7和Solaris 8 SPARC平台上约为4000米,在Solaris 2.6和x86平台上约为2000米,减去开销金额。 例子:

  -Xmx83886080 -Xmx81920k -Xmx80m 

maxMemory()

返回Java虚拟机将尝试使用的最大内存量。 如果没有固有限制,则返回值Long.MAX_VALUE。