我有一个相当消耗内存的 java 应用程序。在我的带有 Windows XP Professional 的 32 位系统上,如果我提供它,该应用程序将运行良好-Xmx1280m
。下面的一切都会以java.lang.OutOfMemoryError: Java heap space
异常告终。
如果我在 64 位 Windows XP Professional 上运行相同的应用程序(其他一切都完全相同),它需要-Xms1400m
防止 OutOfMemory 条件。
据我了解,如果我有一个 C 程序并将其编译为 32 位和 64 位,则 64 位版本将需要更多内存,因为指针更宽等等。然而,在我的 java 示例中,虚拟机(Sun)是相同的,字节码是相同的。
为什么在 64 位机器上需要更多内存?