如何在 Mac OSX 10.7 Lion 上运行 32 位 Java

2022-09-02 03:46:35

根据我对Windows 7(64位)和Java的经验,32位JRE使用更少的内存,并且比64位JRE运行得更快(前提是您不需要或受益于拥有大量内存)。我想Mac OSX(和其他平台)也是如此。

我目前正在运行OSX Lion(v10.7),并且我已经安装了标准的Java应用程序。在Java首选项下,我看到“Apple Inc.”的“Java SE 6”,用于CPU类型“32位”和“64位”版本“1.6.0_26-b03-383”。我更改了首选顺序,将32位版本放在64位版本之上,希望这将使32位版本成为默认版本。

但是“java-version”仍然说:

java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03-383-11A511c)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02-383, mixed mode)

默认情况下是否可以使用 32 位版本?又是如何做到的呢?

此外,是否有人对32/64位版本之间的速度和内存效率有经验/比较测量?


答案 1

我现在发现,可以使用 -d32 开关显式启动 32 位 JVM。

在我的机器上,“java -version -d32”说:

java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03-383-11A511c)
Java HotSpot(TM) Client VM (build 20.1-b02-383, mixed mode)

虽然它没有这么说,但它是一个32位JVM。


答案 2

默认情况下,最新版本的 Java 64 位具有 -XX:+UseCompressedOops(如果您的堆小于 32 GB)。这意味着在任何情况下都使用 32 位引用。对象仍然略大(开销增加 4 个字节)

本文比较了 32 位、64 位与 UseCompressedOops Java:不同的数组和集合消耗多少内存

在性能方面,我发现它是5-10%,具体取决于您正在做的事情。如果您使用大量值,则使用64位会更快。long