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

Ulr*_*rik 21 java macos 32-bit osx-lion

根据我使用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)
Run Code Online (Sandbox Code Playgroud)

是否可以默认使用32位版本?如何?

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

Ulr*_*rik 21

我现在发现,可以使用-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)
Run Code Online (Sandbox Code Playgroud)

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


Pet*_*rey 7

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

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

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