<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 32 位 Java 與 64 位 Java 之間的區別 > 原文: [https://howtodoinjava.com/java/basics/difference-between-32-bit-java-vs-64-bit-java/](https://howtodoinjava.com/java/basics/difference-between-32-bit-java-vs-64-bit-java/) 在計算機架構中, [64 位計算](https://en.wikipedia.org/wiki/64-bit_computing "64-bit")是使用具有 64 位(8 個八位位組/字節)的數據路徑寬度,整數大小和內存地址寬度的處理器。 同樣,64 位 CPU 和 ALU 架構是基于該大小的寄存器,地址總線或數據總線的架構。 從軟件的角度來看,64 位計算意味著使用具有 64 位虛擬內存地址的代碼。 類似地, [32 位計算](https://en.wikipedia.org/wiki/32-bit "32-bit"),CPU 或 32 位編程將 32 位(四個八位位組/字節)用于上述所有目的。 如果轉到 [java 下載頁面](https://www.java.com/en/download/manual.jsp "java download"),它會列出各種安裝包,其中提及針對各種平臺(例如 Linux 或 Windows)的 **32 位**包或 **64 位**包。很多時候,我們擔心哪些包可以在系統中下載并安裝,以使我們的 Java 代碼正常運行? 在這篇文章中,我將嘗試闡明這些不同的術語,并且還將嘗試回答一些明顯的問題。 ```java Discussion Points Understanding 32-bit architecture in detail How 64-bit architecture is different? Which versions of java you should install on 32-bit/64-bit machines? Can a .class file generated using a 32-bit java compiler be used on 64-bit java? What's maximum amount of RAM that will be allocated to java on a 32-bit machine vs. 64-bit machine? ``` 您已經閱讀了 64 位和 32 位計算/架構之間的基本區別。 現在,讓我們加深理解,深入了解比特和字節。 ## 詳細了解 32 位架構 您可能已經知道,在任何 32 位操作系統中,**都被限制為 4096 MB(4 GB)的 RAM** 。 這很簡單,因為 32 位值的大小將不允許在內存中添加更多引用。 > `2 ^ 32 = 4,294,967,296`,即約 4.29 GB 因此,理論上,在 32 位系統中,每個進程最多可以分配 4GB 的內存。 在 Windows 上打破這一點的是如何處理進程地址空間。 **Windows 將進程地址空間減少一半**。 其中一半保留給操作系統(用戶進程無法使用),另一半保留給用戶。 盒中有多少 RAM 無關緊要,一個 32 位進程只能使用 2GB RAM。 更糟糕的是 – **地址空間必須是連續的**,因此實際上,**在 Windows 計算機**上通常只剩下 1.5-1.8GB 的堆空間。 精通技術的讀者可能知道,現代芯片支持 [**PAE**](https://en.wikipedia.org/wiki/Physical_Address_Extension "Physical Address Extension") ,這是一種處理器技術,它允許操作系統使用更多的內存(最大為 64 GB),但它也需要特殊的應用程序支持,大多數應用程序沒有或不一定需要它。 Windows 的 4 GB 限制至少也是許可的因素。 32 位 Windows 的家庭版本在技術上能夠支持 PAE,但出于許可和驅動程序兼容性方面的考慮,硬限制為 4 GB。 我要指出“ *驅動程序兼容性原因*”,因為某些使用本地文件(例如防病毒軟件)的特定應用程序是專門為 32 位/ 64 位計算機構建的,而**本機文件不與其他機器兼容**。 要記住的另一件事是,您的 BIOS 和主板中的其他設備芯片(例如視頻卡)也占用相同的 4 GB 空間中的一些內存,因此可供您的應用程序使用的實際內存進一步減少到大約 1.5 GB。 ## 64 位架構有何不同? 雖然 32 位信息只能訪問 4 GB 的 RAM,但至少在理論上, **64 位計算機可以訪問 172 億 GB 的系統內存**。 因此,它必須消除系統中所有內存消耗的障礙,對嗎? 但事實并非如此。 > Windows 64 位家庭版仍然限制為 16 GB RAM(全部是出于許可原因),但是由于各種兼容性問題,專業版和旗艦版目前最多可以使用 192 GB RAM。 RAM 的每個進程限制也大大提高了 -- 在 64 位 Windows 上,**而不是 2 GB 限制,每個應用程序可以訪問高達 8 TB 的虛擬內存,而無需任何特殊配置**(必須存在于您的系統中)。 當考慮可能需要使用大量 RAM 的視頻編輯或虛擬機等應用程序時,這是選擇下一臺計算機的重要因素。 因此,現在我們對 **32 位計算機和 64 位計算機**有了很好的了解。 讓我們關注與 Java 主要相關的內容。 ## 您應該在 32 位/ 64 位計算機上安裝哪個版本的 Java? 嚴格來說,在 32 位 CPU 架構計算機上,應該安裝 32 位 Java / JRE。 另一方面,在 64 位 CPU 架構計算機上,您可以自由選擇在 32 位 Java / JRE 和 64 位 Java / JRE 之間。 兩者都可以正常工作。 實際上,在 64 位計算機**上,JRE 版本的決定取決于其他因素**,例如在高負載情況下運行應用程序所需的最大內存。 請注意,高可用內存并非免費提供。 它確實會花費運行時間,例如 1)與 32 位相比,在 64 位上需要更多 30-50% 的堆。 為什么? 主要是由于 64 位架構中的內存布局。 首先 – 在 64 位 JVM 上,對象標頭是 12 個字節。 其次,對象引用可以是 4 個字節,也可以是 8 個字節,具體取決于 JVM 標志和堆的大小。 與 32 位標頭上的 8 個字節和引用標本上的 4 個字節相比,這無疑增加了一些開銷。 2)較長的垃圾收集暫停。 建立更多的堆意味著 GC 在清除未使用的對象時還有更多工作要做。 在現實生活中,這意味著在構建大于 12-16GB 的堆時,您必須格外小心。 如果不進行微調和測量,則很容易在幾分鐘內引入完整的 GC 暫停,這可能會導致顯示停止。 ## 使用 32 位 Java 編譯器生成的`.class`文件可以在 64 位 Java 上使用嗎? 絕對是。 Java 字節碼獨立于 32 位或 64 位系統。這就是為什么編譯的 Java 代碼應在“***任何***”系統上可執行的原因。 請記住,因為虛擬機是打包在捆綁包中的一些本機文件,所以它只是為特殊的系統架構而編譯的,而本機文件從不獨立于平臺。 如果是,那么 32 位應用程序如何在 64 位系統上運行?答案是 64 位系統包含一個稱為 [**WoW64**](https://en.wikipedia.org/wiki/WoW64 "WoW64") 的兼容層,實際上**可以在 32 位和 64 位之間來回切換處理器的位模式**,取決于需要執行的線程; 使 32 位軟件即使在 64 位環境中也能平穩運行。 ## 在 32 位計算機和 64 位計算機上,可分配給 Java 的最大 RAM 數量是多少? 我們已經在本文的前面的討論中了解到兩個版本都允許的限制。 在 64 位系統上,理論上對于今天可用的任何配置(*172 億 GB 內存*),其限制都非常高。 供應商仍然出于各種目的施加限制,主要包括許可和與其他本機應用程序的兼容性。 同樣,在 32 位計算機上,限制為 4 GB,出于上述原因,用戶應用程序實際上僅可使用約 1.5 GB。 > 您可以使用 32 位窗口來減少內核空間并增加用戶空間,這是一個技巧。 您可以在`boot.ini`中使用`/3GB`參數。 但是,要實際利用此機會,必須使用[**`/LARGEADDRESSAWARE`**](https://publib.boulder.ibm.com/infocenter/javasdk/v1r4m2/index.jsp?topic=%2Fcom.ibm.java.doc.diagnostics.142%2Fhtml%2Fwinlargeaddress.html "LARGEADDRESSAWARE")開關來編譯/鏈接 JVM。 不幸的是,至少對于 Hotspot JVM 并非如此。 直到最新的 JDK 版本,才使用此選項編譯 JVM。 如果您在 2006 年后版本的 jRockit 上運行,則更加幸運。 在這種情況下,您可以享受高達 2.8-2.9 GB 的堆大小。 僅此而已。 如果不清楚,請發表評論。 或者你只是不同意我。 **祝您學習愉快!** **參考:** * [https://community.oracle.com/thread/2497016?tstart=0](https://community.oracle.com/thread/2497016?tstart=0) * [https://en.wikipedia.org/wiki/32-bit](https://en.wikipedia.org/wiki/32-bit) * [http://en.wikipedia.org/wiki/64-bit_computing](https://en.wikipedia.org/wiki/64-bit_computing)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看