【问题标题】:Java process size 32 bit vs 64 bitJava 进程大小 32 位与 64 位
【发布时间】:2013-11-25 15:16:47
【问题描述】:

来自this IBM article

一个 32 位 Java 进程有一个 4 GB 的可用进程地址空间,由 Java 堆、本机堆和操作系统共享。

...

64 位进程没有此限制,寻址能力以 TB 为单位。对于许多企业应用程序来说,拥有大型 Java 堆是很常见的(我们已经看到了 Java 堆要求超过 100 GB 的应用程序)。 64 位 Java 允许大量 Java 堆(发布的基准堆最高可达 200 GB)。

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

【问题讨论】:

    标签: java memory jvm


    【解决方案1】:

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

    很简单,存储地址的空间是双倍的,所以你可以在这个空间中存储的值是正方形。

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

    请注意,此值仅表示您可以使用的最大内存量,它实际上并没有您此内存 - 但如果您的内存超出您的处理能力,您就没有办法了访问它。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        使用 64 位,您可以表示更多的值。大约 (4,000,000,000 ^ 2),最终大约是 16,000,000,000,000,000,000,

        【讨论】:

          猜你喜欢
          • 2012-02-11
          • 2011-01-28
          • 1970-01-01
          • 2023-03-04
          • 1970-01-01
          • 2010-10-21
          • 1970-01-01
          • 1970-01-01
          • 2012-01-19
          相关资源
          最近更新 更多