<分区>
大多数情况下,当我看到有关使用 -Xms
和 -xmx
JVM 参数设置 Java 堆大小的示例时,人们通常使用 2 的幂:
128m, 512m, 1024m, etc.
这真的有原因吗?这在某种程度上对 JVM 性能有好处吗?或者这仅仅是因为程序员倾向于喜欢 2 的幂? (还是因为默认值为64m?)
附言
当然我知道您基本上可以使用任何您想要的数字 (-Xmx666
)。但是人们倾向于使用 2 的幂。
标签 java heap-memory
<分区>
大多数情况下,当我看到有关使用 -Xms
和 -xmx
JVM 参数设置 Java 堆大小的示例时,人们通常使用 2 的幂:
128m, 512m, 1024m, etc.
这真的有原因吗?这在某种程度上对 JVM 性能有好处吗?或者这仅仅是因为程序员倾向于喜欢 2 的幂? (还是因为默认值为64m?)
附言
当然我知道您基本上可以使用任何您想要的数字 (-Xmx666
)。但是人们倾向于使用 2 的幂。
最佳答案
我不知道为什么其他人会这样做,但对我来说,这是 a) 以 2 的幂为单位给出 RAM 大小的约定,因为内存模块使用它,并且 b) 我从内存中知道 2 的所有幂,直到 65536 ,因此不需要额外的努力。
但是从操作系统/内存的角度来看,使用 2 的幂来分配兆字节没有任何影响。如果我们谈论的是更小的大小(如 511 或 512 字节),那么操作系统的内存管理子系统将四舍五入这些值。但是没有 OS 以兆字节为单位。
关于Java 堆大小 : why use powers of 2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25057936/