我在64位Centos機器上安裝了64位Java。我的查詢是,如果我沒有指定-d64選項,即使沒有安裝32位JVM,JVM也將以32位模式運行?如果未指定-d32或-d64選項,64位JVM運行在64位模式下
另外我有點好奇,如果我們可以使用「javac」的-d64選項。如果是的話,那麼它意味着什麼?它可以用在哪裏?當我讀到this article時遇到了這個問題。
感謝
我在64位Centos機器上安裝了64位Java。我的查詢是,如果我沒有指定-d64選項,即使沒有安裝32位JVM,JVM也將以32位模式運行?如果未指定-d32或-d64選項,64位JVM運行在64位模式下
另外我有點好奇,如果我們可以使用「javac」的-d64選項。如果是的話,那麼它意味着什麼?它可以用在哪裏?當我讀到this article時遇到了這個問題。
感謝
從Oracle文檔鏈接到您:
如何32位和64位操作之間進行選擇?什麼是默認值?
已將選項-d32和-d64添加到Java啓動程序中,以指定程序是在32位還是64位環境中運行。在Solaris上,這些分別對應於ILP32和LP64數據模型。由於Solaris在同一個Java安裝中包含32位和64位J2SE實現,因此可以指定任一版本。 如果既未指定-d32也未指定-d64,則缺省值將在32位環境中運行。
其他Java命令(javac,javadoc等)很少需要在64位環境中執行。但是,-d32/-d64選項可以傳遞給這些命令,然後使用已建立的-J前綴選項(例如:-J-d64)傳遞到Java啓動程序。
所有其他平臺(Windows和Linux)都包含獨立的32位和64位安裝包。如果兩個軟件包都安裝在系統上,則可以通過將相應的「bin」目錄添加到路徑中來選擇其中一個。爲了保持一致性,Linux上的Java實現接受-d64選項。
(重點煤礦)
因此,根據您鏈接到文檔,默認是在32位JRE中運行,並且可以通過運行在64位JRE的javac通過-J-d64
而不是簡單地-d64
。
但是,請注意,本文檔還說它適用於Java 1.4,並且說沒有任何關於更新版本的Java。
爲JRE選擇數據模型(位)是將應用程序的操作限制爲僅在一種模式下運行。 Java字節代碼被設計爲可以在兩種數據模型中工作,因此對於100%純Java應用程序,將根據每種體系結構的行爲和好處進行工作。
但是,如果您的應用程序使用本地庫而不是僅在一種模式下工作,那麼在不支持的應用程序下,應用程序將失敗。爲此,您必須明確指出可以運行哪種模式。
當您設置-d32或-d64時,JRE將不啓動如果您的應用程序無法在選定模式下運行。
所以,這意味着如果在64位機器上運行java代碼而不指定任何選項(-d32或-d64),它將以64位模式運行.........正確? –
對。 這就是java的美麗! –
所以這意味着,除非指定-d64,否則64位機器上的64位JVM將以32位模式運行......對吧? –
@ tm.sauron根據Java 1.4的文檔,是的。 –
但@ tm.sauron正在運行CentOS,它是Linux。作爲最後一段(所有其他平臺...),聽起來像默認情況下,如果安裝64位JRE,則會啓用d64。像d32和d64這樣的聲音只對Solaris有意義。 – Smartmarkey