64 位 Java 的最大内存

新手上路,请多包涵

在 64 位平台上,可以为 java 分配的最大堆空间量是多少?是无限的吗?

原文由 Raymond Barlow 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

理论上 2 64 ,但可能存在限制(显然)

根据 此 FAQ ,它仅受本地系统上的内存和交换空间限制:

在 64 位 VM 上,您可以使用 64 位寻址能力,从而导致最大 Java 堆大小仅受系统提供的物理内存和交换空间量的限制。

另请参阅为什么我不能使用 32 位 JVM 获得更大的堆?

另请记住,您需要通过命令行设置最大堆。没有 -Xmx 命令。没有它,根据相同的常见问题解答,Java 在 64 位机器上使用 64mb + 30% = 83.2mb 作为默认最大堆。

 java -Xmx1000g myClass

在我的机器上工作正常。但它似乎还不支持 ’t’ 修饰符,因此您还不能以 TB 为单位指定最大内存:)

原文由 Chad Okere 发布,翻译遵循 CC BY-SA 2.5 许可协议

如果你能把宇宙中的每个原子都变成一个字节的 RAM,你就可以在 64 位地址空间中分配它。

实际上,这有点夸张。

宇宙中有 10^80 个原子(根据 WolframAlpha),在 64 位系统中有 2^64 字节的地址空间,所以你只能寻址每 5x10^60 个原子中的 1 个。但如果你有 18 亿字节的 RAM,你可能需要几个量子黑洞来为其供电。

原文由 Paul Tomblin 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题