xmx 和 MaxRAM JVM 参数有什么区别?

问题描述 投票:0回答:1

最大RAM

基于机器上的内存量。用于堆的内存比例由命令行选项 InitialRAMFraction 和 MaxRAMFraction 控制 [...] MaxRAM 的值取决于平台。

Xmx

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

据我了解,两者都定义了

heap
大小。不?建议使用什么:
Xmx
还是
MaxRAM
?如果我同时使用哪一个会优先于另一个?

java jvm heap-memory
1个回答
39
投票

-Xmx
指定堆的精确上限。这是设置堆大小的首选方法。

-XX:MaxRAM
不直接定义堆大小。相反,在根据人体工程学计算堆限制时,此参数会覆盖物理 RAM 的实际数量。

如果设置了

-Xmx
,则永远不会使用
MaxRAM
。否则,最大堆大小估计为1

MaxHeapSize = MaxRAM * MaxRAMPercentage / 100% (default MaxRAMPercentage=25)

1 实际的算法有点复杂,并且取决于其他参数。

© www.soinside.com 2019 - 2024. All rights reserved.