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

根据我使用Windows 7(64位)和Java的经验,32位JRE使用的内存更少,运行速度明显快于64位JRE(假设您不需要或从拥有大量内存中获益)。 我想同样的事情也适用于Mac OSX(和其他平台)。

我目前正在运行OSX Lion(v10.7),我已经安装了标准的Java应用程序。 在Java Preferences下,我看到“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位版本之间的速度和内存效率的经验/比较测量?

我现在发现,可以使用-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。

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

本文将32位,64位与UseCompressedOops Java进行比较:不同的数组和集合占用多少内存

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

进入“Java首选项”应用程序并将java 32位拖到列表顶部。

请尝试以下步骤:

  1. 打开终端并转到/System/Library/Frameworks/JavaVM.framework/Versions/
  2. 键入ls -l以列出所有可用的Java版本
  3. 输入sudo ln -fhsv CurrentJDK

参考: 更改Java版本

在/System/Library/Frameworks/JavaVM.framework/Versions中我发现版本1.6安装并更改了java的路径,javac使用环境别名指向/System/Library/Frameworks/JavaVM.framework/Versions/1.6/home而不是在/ usr / bin /中找到的默认链接