在每个例子中,我都会看到java文档中的-Xmx标志(以及网络上的示例),它始终是2的幂。例如' -Xmx512m',' - Xmx1024m'等
这是一项要求,还是出于某种原因这是一个好主意?
据我所知,记忆力一般来自2;这个问题具体是关于java内存标志。
答案 0 :(得分:3)
它使事情变得简单,但它更有利于你的利益。
没有特别的理由选择2的幂,或50 MB的倍数(也是常见的),例如-Xmx400m
或-Xmx750m
注意:JVM并未严格遵守此规定。它将使用它来计算不同区域的大小,如果你添加它们往往比你提供的数量略小。根据我的经验,堆减少1% - 2%,但如果你考虑JVM使用的所有其他内存区域,这并没有太大的区别。
注意:硬件的内存大小通常是2的幂(在某些PC上它是2倍的2倍)这可能让人们习惯于将内存大小视为2的幂。
BTW:AFAIK,在大多数JVM中,每个区域的实际大小是页面大小的倍数,即4 KB。