64位Java的最大内存

Ray*_*low 19 java heap

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

Cha*_*ere 16

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

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

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

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

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

java -Xmx1000g myClass 
Run Code Online (Sandbox Code Playgroud)

在我的机器上正常工作.但它似乎还不支持't'修饰符,所以你不能指定太字节的最大内存:)


Pau*_*lin 14

如果您可以将Universe中的每个原子都放入一个RAM字节中,则可以将其分配到64位地址空间中.

实际上,这有点夸大其词.

宇宙中有10 ^ 80个原子(根据WolframAlpha),在64位系统中有2 ^ 64个字节的地址空间,所以你只能解决每5x10 ^ 60个原子中的1个.但是如果你有18个qintillion字节的RAM,你可能需要一些量子黑洞来驱动它.

  • 您需要266位来索引Universe中的每个原子 (4认同)
  • 不想等待全面收集! (2认同)