簡體   English   中英

用於64位JVM的Java編程

[英]Java programing for 64 bit JVM

幾個問題:):

如何識別當前安裝的JVM? (64位/ 32位)

在為64位JVM目標平台編程時,是否需要做一些考慮?

我的Java代碼可以在32位以及64位JVM上運行嗎?

如何在64位JVM上運行我的Java App?

如何識別我的Java App使用的JVM?

通常情況下,64位jvm會識別自己。

我看到32/64位注意事項:

  1. 地址空間 - 如果你不期望能夠處理更多的1.3Gb內存,那么你就不會看到差異
  2. 本機庫 - 如果您正在加載任何JNI庫,那么它們將需要與您的VM架構相匹配。 例如,不要嘗試從64位vm加載32位本機庫(不使用-d32類型的標志)

是的,相同的代碼將在兩個JVM上運行。

我認為系統屬性“sun.arch.data.model”具有32/64標志。

這里有一些有用的信息: http//www.oracle.com/technetwork/java/hotspotfaq-138619.html

在您自己的Java代碼中,您不必對32位或64位執行任何特殊操作。 與例如C和C ++不同,Java中的int總是32位, long總是64位(在C和C ++中,這些類型的大小取決於系統)。

沒有單獨的32位和64位版本的Java字節碼; 字節碼完全相同,無論您運行它的JVM是32位還是64位。 您不必為32位或64位不同地編譯Java源代碼。 關於功能,如果它在32位或64位JVM上運行,則對Java應用程序無關緊要。

jowierun已經提到過可能存在一些技術差異。 可能還存在性能差異; 例如,Oracle的64位JVM for Windows調整方式與32位JVM不同,它還進行其他JIT優化。 我自己注意到了我最近編寫的計算密集型應用程序; 在64位JVM上,它運行速度比在32位JVM上快得多。 (但這只是一個例子,不要把它當作任何程序在64位JVM上運行得更快的證據)。

如果您計划使用Java Native Interface(JNI)編寫本機代碼,則必須特別注意編寫將在64位和32位計算機上運行的正確C代碼。 確保在向/從java代碼傳遞參數時使用正確的Java類型(JNI為java類型提供了一組typedef),尤其是在轉換數組時。 在測試本機代碼時,使用不同的JVM測試兩種體系結構(-m32將強制GNU gcc上的32位arch)。

你有這些問題回到最前面。

  1. 您不必在Java代碼中執行任何操作,它將在32位和64位上運行。
  2. 因此,您不需要知道它是否是64位JVM。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM