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

时间:2014-07-31 11:38:08

标签: java heap heap-memory

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

128m, 512m, 1024m, etc.

真的有这个原因吗?这在某种程度上对JVM性能有益吗?或者这样做是因为程序员倾向于喜欢2的幂? (或者因为默认值是64米?)

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

2 个答案:

答案 0 :(得分:1)

不,你可以使用任何价值。无需2的力量。

例如:

 -Xms4043m -Xmx8303m

答案 1 :(得分:1)

我不知道为什么其他人会这样做,但对我来说,这是一种惯例,因为内存模块使用了这两种内存模块,所以RAM的大小为2,而b)我知道内存模块的所有权限都高达65536 ,所以这不是额外的努力。

但是从操作系统/内存的角度来看,使用2的幂来分配兆字节没有任何影响。如果我们讨论的是较小的大小(如511或512字节),那么操作系统的内存管理子系统将对这些值进行舍入。但没有操作系统为兆字节轮数。