2011-08-04 95 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/