为什么JVM内存参数通常是256的倍数?

Pat*_*Pat 5 java memory-management jvm-arguments

我已经看到几乎所有的JVM内存参数通常是256的倍数或round二进制值 - 例如256m,512m,1024m等.我知道,它可能与物理内存(RAM)通常是二进制数的事实有关,例如256 MB,1 GB等

我的问题是,如果将JVM内存设置为256的倍数或任何二进制值,它是否真的有助于内存管理?将JVM内存保持为圆形十进制值(例如1000m而不是1024m)是否有害 - 尽管我从未见过任何使用这种以round十进制表示的值的JVM .

操作系统会在启动时将所提及的内存分配给JVM,所以我想,对于JVM来说,它是否可以有效地管理圆形十进制内存大小(例如1000 MB)或者是否存在任何缺点更是一个问题.

编辑:我知道,我们CAN使用JVM内存的十进制值,但我的问题是SHOULD我们使用十进制值?

编辑2:关于JVM对处理每个内存大小同样有效的意见/猜测,请分享您用于得出结论的任何相关链接.我已经WAR在其他开发人员中看到了关于这个主题的足够的内容,但是我没有看到很多具体的推理要么支持 - 十进制或二进制值.

Chi*_*hip 8

对于JVM内存参数,没有必要使用2的倍数.如果旧的值不够,那么内存分配通常会将值加倍.

如果以1MB步长增加分配的内存值,则必须在配置符合要求之前将值调整几(100)次.因此,将旧值加倍可以更舒适.

这取决于当时记忆是一种廉价的资源.

编辑:

正如您已经提到的,可以分配1000 MB或381 MB之类的值.JVM可以处理足以托管permGenSpace,堆栈和堆的每个内存大小.