Java进程大小为32位对64位

时间:2013-11-25 15:16:48

标签: java memory jvm

来自this IBM article

  

32位Java进程具有Java堆,本机堆和操作系统共享的4 GB进程地址空间。

     

...

     

64位进程没有此限制,地址能力以兆兆字节为单位。许多企业应用程序通常都有大型Java堆(我们已经看到Java堆需求超过100 GB的应用程序)。 64位Java允许大量的Java堆(基准测试发布的堆高达200 GB)。

背后的解释是64位处理器具有相当大(基本上非常大)的地址空间而32位没有。基本上是什么发生在64位内部,不在32位机器内部。

3 个答案:

答案 0 :(得分:3)

  

背后的解释是64位处理器具有相当大(基本上非常大)的地址空间而32位没有。基本上是64位内部发生的事情不在32位机器内部。

很简单,存储地址的空间是两倍,因此您可以在此空间中存储的值为正方形。

对于较小的值,可能更容易看到这一点;例如,如果我有一个4位地址空间,我可以存储到1111,最多可以存储15位内存。使用8位地址空间,我可以存储最多11111111,给我255(15 ^ 2)位的内存。

请注意,此值仅表示您可以使用的最大内存量,它实际上并不提供您的内存 - 但如果您有更多的内存而不是可以解决的内存,那么您无从访问它。

答案 1 :(得分:1)

32位进程通常具有32位地址空间,这限制了可以寻址的内存量。 (例如,参见“Why can't I get a larger heap with the 32-bit JVM?”)一个64位进程有一个64位的地址空间,它基本上是可用地址的平方。

答案 2 :(得分:0)

使用32位字,可以产生大约40亿个不同的值。

这是40亿字节的内存地址。

64位,可以表示更多值。约(4,000,000,000 ^ 2),最终约为16,000,000,000,000,000,000,