Java 堆大小 : why use powers of 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/

相关文章:

java - 一个用于抛出异常的java类

java - 基本增量

java - 将 JSONArray 转换为 POJO 类 List<type>,无法转换

从 AKKA 发送非阻塞 http 请求的 Java 示例

c++ - 视觉 C++ : possible to limit heap size?

javascript - Node.js 堆内存不足

java - Tomcat 7 PermGen Space 或无法创建 JVM

java - 相同的程序,相同的 JVM,但在不同机器上的内存需求和执行时间却大不相同——为什么?

go - 准确测量堆增长

memory - 内存中的栈真的是栈吗?