2011-08-04 89 views
21

根据我对Windows 7(64位)和Java的经验,32位JRE使用更少的内存,运行速度比64位JRE快得多(只要您不需要或从拥有大量内存中受益)。我想Mac OSX(以及其他平台)也是如此。如何在Mac OSX上运行32位Java 10.7 Lion

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

但“Java的版本”还称:

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位版本之间的速度和内存效率的经验/比较测量?

+8

中找到的默认链接顺便说一句,16位版本使用的内存更少,速度更快。 – 2011-08-04 13:16:13

回答

21

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

在我的机器, “Java的版本-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。

+0

+1工作完美。我运行了一个java应用程序,它在Activity Monitor中显示为Kind:'Intel'而不是'Intel(64位)'。出于某种原因,'arch'命令对java没有任何影响。 – Kelvin

7

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

本文比较32位,64位与UseCompressedOops Java: How much memory do different arrays and collections consume

在性能方面,我已发现根据5-10%它是你在做什么。如果您使用了很多long值,则使用64位将会更快。

+0

这是一些有用的信息,但我该如何启动32位JVM?引用的文章比较了32位和64位JVM(尽管也许在不同的平台上)。 – Ulrik

+0

在UNIX中,我会打开一个shell并使用完整路径名来运行我想要的程序(适用于任何程序)。或者我会改变默认PATH以在Windows或Unix中包含'bin'目录以使用32位版本(再次没有特定于Java) –

+1

在Windows或UNIX中,这是微不足道的,我知道......您只需要知道是查找java二进制文件的JRE的安装位置,并且可能设置了一个适当的JAVA_HOME环境变量。在Mac上,Java安装非常模糊,我无法找到32位安装。但我认为Java Preferences GUI中显示的信息意味着32位版本以某种方式存在......某处... – Ulrik

1

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

+0

正如我所描述的那样,这是我已经尝试过的 - 没有看到任何区别。 – Ulrik

+0

它为我工作。 – serega

1

尝试下面的步骤:

  1. 打开终端进入/System/Library/Frameworks/JavaVM.framework/Versions/
  2. 输入ls -l列出所有可用的Java版本
  3. 进入须藤LN -fhsv CurrentJDK

参考:Changing Java Version

1
在/System/Library/Frameworks/JavaVM.framework/Versions

我发现1.6版安装和改变的java的路径,的javac指向 /System/Library/Frameworks/JavaVM.framework/Versions/1.6/家庭使用环境 别名而不是在/ usr/bin/