在Java文档中,以及网络上的示例中,我看到-Xmx标志的每个示例都是2的幂,例如“-Xmx512m”,“-Xmx1024m”等。
这是一个要求吗?还是出于某种原因而建议使用?
我知道内存通常是2的幂;但这个问题特别涉及Java内存标志。
这是一个要求吗?还是出于某种原因而建议使用?
我知道内存通常是2的幂;但这个问题特别涉及Java内存标志。
这样做很简单,但更多是为了你的利益而不是其他任何原因。
选择2的幂或50MB的倍数(也很常见)如-Xmx400m
或-Xmx750m
没有特别的理由。
注意:JVM不会严格遵守这个值。它将使用此值计算不同区域的大小,如果将它们加起来,通常会轻微小于您提供的数字。根据我的经验,堆大小会少1%-2%,但如果考虑JVM使用的所有其他内存区域,这并没有太大差异。
注意:硬件的内存大小通常是二的幂(在某些PC上是二的3次方)。这可能会使人们养成认为内存大小应该是2的幂的习惯。
顺便说一句:据我所知,在大多数JVM中,每个区域的实际大小都是页面大小的倍数,即4KB。
6g
是有效的..但它不是二的幂次方。 - OneCricketeer-Xmx
Java命令行参数的值。此外,那个问题的答案和这个问题的答案互不影响。 - Lew Bloch