2009-10-29 222 views
9

這個問題通常是關於64位Java應用程序的,儘管我是因爲使用Netbeans/Eclipse而出現的。我正在使用64位處理器和64位操作系統(Windows 7)。我想用超過4GB的堆內存(即使用Xmx標誌)運行Netbeans/Eclipse,但我遇到了一些困惑。似乎並沒有Netbeans的64位版本,雖然其他操作系統的Eclipse有64位版本,但沒有Windows版本。此外,我找不到最新的JRE/JDK的64位版本(我讀過的網站提到了這些內容的存在,所以我不確定Sun是否暫時將它們刪除)。64位Java應用程序:是64位操作系統,64位JRE和64位應用程序嗎?

現在,我已經解釋了我的情況,我的問題如下:

  1. 什麼軟件,我需要比堆內存4GB的多個運行NetBeans/Eclipse中/(隨機Java應用程序)?是否有足夠的64位操作系統?我是否還需要64位JRE?
  2. 我認爲Java源代碼和Java字節碼是獨立於體系結構的,因爲在使用32位64位JDK編譯的Java程序中,可以在不同的機器上運行32位或64位JRE。如果這是真的,爲什麼Eclipse有一個32位版本和一個64位版本(我意識到他們沒有一個用於Windows,但他們有一個用於Linux)?這是否意味着Eclipse可能具有本地庫,對此,32位與64位有什麼關係?

由於提前,
red.october

更新1:
好了,它原來有就是Eclipse for Windows的64位版本,但它深埋出於某種原因(至少它沒有看到它從主頁面鏈接到哪裏)。在搜索了很長時間之後,我發現了一個blog post,其中聲明您可以在Eclipse Downloads處獲得適用於Windows的64位Eclipse。該鏈接指向一個包含許多不同發行版本鏈接的頁面 - 我只是選擇了最新的穩定版本(本文發佈時爲3.5.1)。第二頁列出了Eclipse 3.5.1的各種下載,並且對於每次下載,您都可以選擇多種體系結構(32位和64位)和操作系統(例如Windows,Linux)。我個人選擇了Eclipse SDK下載 - 這包括「Eclipse平臺,Java開發工具和插件開發環境,包括源代碼以及用戶和程序員文檔」。我不確定是否需要源代碼或文檔,但我想我以後可以隨時刪除它。

回答

9

是的,你需要一個64位的JVM來利用你所有的內存。我沒有及時瞭解你能爲Windows獲得什麼,所以我會讓其他人回答這個問題。

但是,我認爲你無法找到64位netbeans的主要原因是它是100%純java和獨立於體系結構。 Eclipse提供了一個具有更原生外觀和感覺(SWT)的替代GUI框架,並將其用於開發環境本身。 將您的java應用程序鏈接到本地​​庫後,您需要爲正確的架構分發這些庫,因此需要依賴eclipse發行版(第二項)。

+0

酷 - 感謝您清理那個。 – 2009-10-30 00:33:31

+0

這是否意味着分發我需要在相應架構的eclipse中開發的java應用程序? – Chris 2011-01-13 22:36:33

+0

@Chris:不,完全沒有。您只需確保平臺二進制文件隨產品一起提供並正確加載。有很多頁面描述瞭如何做,我相信它也在SWT常見問題解答中(http://www.eclipse.org/swt/faq.php) – Fredrik 2011-01-16 12:39:20

2

您可以在Windows 7中運行64位JDK或JRE,現在我正在運行它們。

Java SE Development Kit 6u16

Java SE Runtime Environment 6u16

選擇向下您有Windows 32或64位的選擇哪種OS從下拉。

+0

我應該把這個問題分開 - 弗雷德裏克回答了我的一般問題,但你回答了我如何獲得64位JDK6(所以我給出了兩個答案+1)。事實證明,我的問題是我試圖下載JDK + Netbeans組合EXE,並且自動附帶JDK的32位版本。謝謝。 – 2009-10-30 00:39:33

1

有沒有這樣的事情作爲一個64位Java'應用程序'。 Java編譯的類都是java字節碼,句點。在64位JVM上執行程序(反過來需要64位操作系統)可以訪問更多的內存,但是由於所有對內存操作的訪問都是隱藏的,並且所有數據類型都相同,所以程序看不到這些差異。

另請參見this question

+0

@Jherico:在這種情況下,我覺得你的答案是語義pap,他希望獲得超過32b JVM限制的內存量,並且打破你沒有這種想法的想法,他可以使用Long來表示每個變量,它確實是一個64位Java應用程序。 (毫無意義,但可能。) – 2009-10-30 01:35:24

+0

@sudo noob:我認爲Jherico正確回答了我的問題。沒有本地代碼的Java應用程序沒有32位或64位版本(這正是我所問的) - 你編寫和編譯一次,而諸如它可以訪問多少內存等事情依賴於JVM和硬件平臺。我不認爲64位應用程序中的64位意味着所有數據類型的長度都是64位(我認爲char在64位C應用程序中仍然是8位長)。 – 2009-10-30 05:17:47