Java中-Xmx标志的有效值

8
在Java文档中,以及网络上的示例中,我看到-Xmx标志的每个示例都是2的幂,例如“-Xmx512m”,“-Xmx1024m”等。
这是一个要求吗?还是出于某种原因而建议使用?
我知道内存通常是2的幂;但这个问题特别涉及Java内存标志。

你学过二进制吗?二的幂次方?6g是有效的..但它不是二的幂次方。 - OneCricketeer
可能是为什么内存容量总是以2的整数次幂呈现?的重复问题。 - OneCricketeer
这与其他问题无关,据我所见。那个问题是关于Android模拟器和内存的RAM,而这个问题是关于-Xmx Java命令行参数的值。此外,那个问题的答案和这个问题的答案互不影响。 - Lew Bloch
1个回答

6

这样做很简单,但更多是为了你的利益而不是其他任何原因。

选择2的幂或50MB的倍数(也很常见)如-Xmx400m-Xmx750m没有特别的理由。

注意:JVM不会严格遵守这个值。它将使用此值计算不同区域的大小,如果将它们加起来,通常会轻微小于您提供的数字。根据我的经验,堆大小会少1%-2%,但如果考虑JVM使用的所有其他内存区域,这并没有太大差异。

注意:硬件的内存大小通常是二的幂(在某些PC上是二的3次方)。这可能会使人们养成认为内存大小应该是2的幂的习惯。

顺便说一句:据我所知,在大多数JVM中,每个区域的实际大小都是页面大小的倍数,即4KB。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接