Java堆大小:为什么要使用2的幂?

5

通常在我看到使用-Xms-xmx JVM参数设置Java堆大小的示例时,人们使用2的幂:

128m, 512m, 1024m, etc.

这样做是否有实际原因呢?这对JVM性能有益吗?还是只是因为程序员倾向于使用2的幂次方?(或者因为默认值是64m?)

P.S. 当然,我知道你可以使用任何你想要的数字(-Xmx666)。但人们倾向于使用2的幂次方。


只是那些尺寸重要的时候的习惯罢了... - Denys Séguret
2
请参见 https://dev59.com/8GbWa4cB1Zd3GeqPSxC0。 - Davz
这个世界上有10种人,一种懂二进制,另一种不懂!!! :p - Not a bug
2个回答

3
我不知道其他人为什么这样做,但对我来说,a) 将 RAM 大小表示为 2 的幂次方是惯例,因为内存模块使用这种方式,b) 我记得所有的幂次方直到 65536,所以这并不需要额外的努力。
但从操作系统 / 内存的角度来看,使用 2 的幂次方分配兆字节并没有任何影响。如果我们谈论较小的大小(如 511 或 512 字节),那么操作系统的内存管理子系统将会舍去一些值。但没有任何操作系统会舍去兆字节。

2

您可以使用任何值,不必是2的幂。

例如:

 -Xms4043m -Xmx8303m

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