熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

64位環境中的Java

2022-06-13   來源: Java核心技術 
面向服務的架構(SOA)是一種軟件設計典范可使無所不在的通信跨越不同企業連接眾多的平台和設備從而使基礎結構更加靈活SOA的流行是圍繞可擴展標記語言(XML)用於定義元數據的業界標准化取得巨大成功的結果也是致力於使用XML在Web services (WbS)標簽下開發新一代中間件的結果
  大部分主要軟件解決方案提供商都已采用Web services產品應用程序平台套件產品(如BEA WebLogic Platform )將來自多個開發商的產品跨越不同企業無縫地集成在一起這種方法有利於軟件更好地集成在這一點上采用SOA三個領域中具有重要的意義企業應用程序集成(EAI)企業對企業(BB)集成和最近的移動軟件解決方案SOA簡化了硬件和軟件構建模塊的組合以適當的粒度提供適當的業務服務這允許企業既可以增加Intel Itanium 系列處理器的數量又可以向外擴展到Intel Xeon處理器采用SOA的解決方案還會淡化服務器與客戶端之間的區別從而使所有可連接設備在企業計算環境中做出有價值的貢獻
  基於SOA的解決方案的基礎不斷擴大為激增的無線設備帶來好處在應用程序間傳遞XML數據為SOA提供了基礎還允許設備以不可分割的方式交換信息並將靈活的計算擴展到傳統辦公環境的邊界之外
  硬件和軟件的發展可以進一步促進向SOA的轉換這既需要原始速度方面的性能又需要具有處理不斷增大的數據量的能力Intel Itanium系列處理器允許大量內存直接尋址從而提高了運算能力同時還能提供企業級的可靠性可用行和可伸縮性
  除硬件性能外SOA還需要能夠充分利用可用性能的執行環境BEA的WebLogic JRockit是一種企業Java虛擬機(JVM)它采用完全位的功能提供出色的性能BEA WebLogic JRockit利用極富創造力的代碼性能和自適應最優化連同創新的可伸縮自適應垃圾收集器確保在Intel Itanium 體系結構上實現最佳性能

企業 Java和位尋址
  特別是服務器應用程序傾向於利用大量可用內存企業Java應用程序傾向於訪問大量數據因此大地址空間可以顯著降低磁盤訪問的次數此外大內存還允許對從網絡訪問接收的數據進行緩存從而也能潛在地降低網絡流量業內領先的基准(如SPECjbb)在位體系結構(如Intel Itanium 微處理器)上表現得更好(參見表 硬件廠商 硬件系統 JVM名稱 CPU# 結果 Fujitsu Limited(富士通有限公司) PRIMEPOWER HotSpot 位Server VM在Solaris/SPARC 版上 HewlettPackard(惠普) HP Integrity Superdome Server (Itanium M) HotSpot 位)在HPUX i v for Itanium Fujitsu Limited(富士通有限公司) PRIMEPOWER HotSpot 位Server VM在Solaris/SPARC _版上 HewlettPackard(惠普) HP Superdome Server 位Server VM 在HPUX i for PARISC +上 Sun Microsystems Sun Fire K HotSpot 位Server VM在Solaris/SPARC _版上

  表業界領先的基准(如SPECjbb)在位體系結構(如Intel Itanium 微處理器)上表現得更好(數據來源Standard Performance Evaluation Corporation(標准性能評測公司)[SPEC] specjbb評測結果)已發布的specjbb結果的前名都是在位處理器上取得的這裡列出了前五位

  Java應用程序將對象分配到堆通常具有較高的對象分配速率堆用完時就要進行垃圾收集以便釋放堆空間使應用程序繼續運行許多大型Java應用程序都得益於擁有較大的堆因為這可以降低垃圾收集的開銷並且還允許JVM更加靈活地查找較小的插入點以便在其上收集垃圾
  此外還常常可以從運行一個以上應用程序的平台上獲得更高的性能例如在單個系統中創建三層設置是可能的方法是在單個平台上運行Web服務器應用程序服務器和數據庫這種設置在具有較大內存的系統中將執行得更好通過群集運行應用程序的多個實例也是可行的大內存可使每個Java應用程序的實例都有較大的堆空間因此能夠從降低垃圾收集開銷中得益進而提高應用程序的整體性能
  在典型的設置中有數台運行應用程序服務器的計算機全部通過網絡連接到一台強大的後端數據庫在數據庫成為瓶頸時這種系統的性能通常依賴於數據庫系統的飽和程度要解決此問題可以在應用程序服務器容器中使用緩存自然在具有大內存的位系統中這樣更加有效

企業 Java與Intel Itanium 微處理器
  如果可以使用多個位處理器Intel Itanium處理器系列可為企業Java應用程序帶來許多引人注目的優點企業 Java應用程序需要高可靠性和x的可用性Itanium 微處理器上的RAS(可靠性可用性可服務性)特性可與多種其他服務器處理器相比參見表所示如表中所述Intel Itanium 微處理器可以提供比任何其他服務器微處理器更強的錯誤檢測錯誤糾正和錯誤恢復功能

功能 Itanium IBM Power Intel Xeon MP Sun UltraSparc Opteron 對數據總線的錯誤恢復(ECC) X X   X   內部軟錯誤邏輯檢查       Lockstep支持 X   X     錯誤數據內嵌 X X       緩存可靠性(Pellston) X       內存SDEC雙位重試 X X X X X 內存節約 X X X X   分區 X(節點) X(核心) X(節點) X(節點)   電隔離分區 X(節點)   X(節點) X(節點)  

  表幾種服務器微處理器之間的RAS特性比較(按照本文發布時各開發商的可用產品文檔)
  Itanium 處理器系統總線將幾種高級數據完整性功能集成到一起可以提高錯誤檢測和錯誤糾正能力  Itanium 處理器系統總線使用錯誤糾正代碼(ECC)可以糾正單個位得錯誤檢測雙位錯誤發送中毒數據並可檢測所有僅限於半字節(位)的錯誤系統設計人員也可以選擇將相同的ECC代碼用於其他系統級緩存主內存陣列或I/O子系統緩沖區中此外雙位奇偶校驗碼還可以保護地址總線
  總之基於Itanium 的解決方案可以趕上甚至超過先前成本較高的專用體系結構系統所提供的可靠性特性基於Itanium 的系統可以通過較低的成本提供這種可靠性同時還能提供多種操作系統選擇和廣泛的生態體系合作伙伴支持
  增加處理器數量帶來的性能可伸縮性是令人滿意的因為通常情況下增加平台上處理器的數量要比更改為新的更加強大的平台破壞性低由於性能要求的不斷提高向已部署的系統中增加更多處理器的能力必不可少無論是在產品中還是對於通過集群組成得其他產品Intel Itanium 處理器都可以提供非凡的處理器可伸縮性數據總線與內存之間的高帶寬和大型片載緩存可以在單一平台上實現性能的線性提升對於企業 Java應用程序具有個處理器的基於Intel Itanium 的系統其性能在通常情況下是單處理器系統的
Intel Itanium 微處理器具有 MB的片載緩存並且很快即可提供更大的緩存除了可以去除來自前端總線(數據總線與內存之間的總線)的數據流量來提高處理器的擴展以外片載緩存還可以減少由於處理器等待內存而無法執行指令的時間企業應用程序確實擁有數量可觀的工作數據而在這些大型片載緩存中可以輕松容納相當大的工作數據集從而可以實現更高的性能
  程序操作碼通常保留在寄存器中當操作碼的數量超過寄存器的數量時當前不需要的操作碼就會通過兩種方式被傳輸到內存中通過內存存儲操作的顯式方式或者通過將這些操作碼移動到堆棧的隱式方式在很多平台上這會加重緩存和內部數據路徑的壓力並且還要插入很多附加指令才能移動這些操作碼Intel Itanium處理器系列的架構中已經包含個通用寄存器和個浮點寄存器為包含大量操作碼的服務器工作負荷提供了足夠的空間
  基於Intel Itanium 的系統利用顯式並行指令計算(EPIC)功能超越了常規處理器體系結構的順序訪問特性應用程序通過編譯器與處理器進行顯式通信其操作可以並行完成這樣可使整體使用效率更高通過使用預測技術降低分支指令和分支指令預測失敗的次數還可以進一步提高性能Intel Itanium 處理器系列通過使用數據和控制推測(這些功能可以幫助隱藏與內存相關的處理器停頓)以便編譯器提高性能從而提供額外的穩定性級別並提高整體可靠性和性能

挑戰與問題
  Java的流行是因為它與平台無關在一個平台上開發的應用程序也可以部署到任何其他平台應用程序以隱式方式依靠JVM來提供針對平台得優化性能代碼生成線程管理內存分配和垃圾收集都是Java應用程序性能的重要方面因此JVM處理這些方面的方式就是一個關鍵的性能區別
  Intel Itanium處理器系列使用EPIC體系結構這種體系結構的關鍵特性是多個指令組成幾個指令束可以在同一時鐘周期內發出這些指令束以便執行它們編譯器控制用於識別可以組成指令束的指令的質詢以便充分利用這種並行機制計算機的性能始終取決於所生成代碼的質量和基礎硬件快速使用代碼的能力
  伴隨預期優勢而來是任務的增加使用Intel Itanium體系結構編譯器的任務可能會比其他平台上更多因為EPIC概念允許編譯器大量占用更多的空間以便從這種體系結構中獲益
  Java的首要問題是代碼生成是應用程序執行的一部分對於Java雖然編譯器生成正確代碼非常重要但迅速生成代碼也是重要的速度較慢的代碼生成器會對應用程序性能造成負面影響此外啟動應用程序的較長延遲也是令人不快的
  在編譯器中代碼調度程序是關鍵組件它需要查看可用指令然後決定哪些指令能夠綁定到一起顯然代碼調度程序能夠查看的指令越多找到適當指令的幾率越大也就越能從代碼並行機制中受益范圍(即代碼調度程序能夠查看的代碼數量)也是影響應用程序性能的一個重要因素
  Java代碼通常由大量的類和方法組成大多數方法一般都很小這樣就會極大地限制調度程序可以查看的范圍JVM需要找到能夠擴展這一范圍的方法JVM還必須能夠高效地處理大量方法例如在SPECjAppServer基准中共有大約種方法沒有一種方法能夠使用超過%的執行時間

  內存管理器也有必須面對的問題雖然具有較大的堆對性能有益但為了使堆管理算法伸縮自如這也加重了JVM的負擔雖然始終都有堆碎片的問題但在堆較大時這一問題就很嚴重了

編譯器和優化器
  為了實現快速啟動許多JVM選擇在開始時首先解釋Java字節碼在隨後運行時再對這些字節碼進行編譯然而JRockit首先使用JIT(Just In Time)編譯器編譯代碼雖然啟動時間稍長但這樣可以使應用程序能夠從一開始就提高性能為了實現快速啟動WebLogic JRockit不使用所有可能的編譯器優化雖然使用所有編譯器優化可能會在應用程序執行的初始階段獲得較高性能但在啟動時間上的額外延長也被認為是不必要的
  從應用程序性能的角度考慮使用所有優化去編譯所有方法也是不必要的因為編譯時間也是應用程序執行時間的一部分因此不僅WebLogic JRockit不會在啟動時完全優化所有方法而且在整個應用程序運行期間也會保留大量的方法不被優化WebLogic JRockit僅選擇改進後能夠最大限度地提高應用程序性能的函數然後僅對這一少部分方法進行優化
  WebLogic JRockit有兩個各不相同但可以協同操作的代碼生成器JIT編譯器和優化編譯器如圖所示大多數方法只能遍歷圖表的左半邊某些選擇方法將會利用優化編譯器

  
BEA WebLogic JRockit有兩條代碼編譯途徑

  WebLogic JRockit使用尖端的低開銷的基於采樣的技術來識別應該優化的函數JVM包含一個采樣器線程該線程以周期性間隔喚醒並檢查幾個應用程序線程的狀態它會識別每個線程正在執行什麼方法並記錄某些執行歷史紀錄采樣器線程為所有方法跟蹤此信息當它發現頻繁使用某一方法時就會打上標記以便進行優化在應用程序運行期間較早的階段會有大量這種優化機會隨著應用程序的繼續執行優化機會出現的速率不斷下降
  由於方法的大小通常很小而范圍對代碼調度程序非常重要因此內嵌方法的優化是最重要的調用方法的代碼直接在調用點插入在Java中這可能很難完成原因有很多如在執行期間開始前接口調用遠程調用和虛擬調用中被調用函數的標識未知WebLogic JRockit擁有現成的技術能夠解決一部分問題如果完成情況很差則內嵌方法可能會導致代碼膨脹進而造成性能急劇下降WebLogic JRockit包含精心調試過的啟發式可以防止這種性能下降
  WebLogic JRockit中的優化編譯器包含許多基於Intel Itanium 微體系結構的眾所周知的代碼生成技術這些技術包括尖端的寄存器分配器它可以充分利用Intel Itanium處理器系列的大寄存器堆棧(個通用寄存器和個浮點寄存器)

內存分配和垃圾收集
  WebLogic JRockit的堆管理策略可以隨線程數和堆空間大小一同縮放內存分配通過線程本地數組完成在堆上為每個線程分配約個對象的空間這種方案可以提升數據的空間位置和臨時位置從而實現處理器緩存的高性能還會大大降低線程間的同步以便獲得可分配給對象的堆空間線程本地數組的大小是性能的重要參數最佳大小取決於應用程序WebLogic JRockit包含相應的啟發式可在應用程序執行期間對該參數進行調試
  WebLogic JRockit包含多種垃圾收集器不同的應用程序可獲益於不同的收集器JVM包含相應的啟發式可以按各自適應方式為每個應用程序找到最佳的垃圾收集算法所有的垃圾收集器在設計上都可以正確處理大型堆算法可以利用堆中數據稀疏這一優勢——即堆中包含的大多是由壽命短的對象形成的垃圾
  對垃圾收集器加以區分根據是它們是否包含苗圃(代)標記階段是否多線程掃除階段是否多線程以及收集器是與應用程序並發運行還是在進行垃圾收集期間停止應用程序這些選擇可以影響垃圾收集的頻率和每次垃圾收集的持續時間(或暫停時間)對於最大應用程序吞吐量應該選擇最小化總垃圾收集時間(垃圾收集頻率的結果)和每次垃圾收集平均持續時間但是在很多應用程序中響應時間也是非常重要的在這些情況下必須確保暫停時間最小WebLogic JRockit允許用戶指出應用程序最重要的要求(響應時間或吞吐量)然後WebLogic JRockit將選擇能夠實現所選目標的垃圾收集方法
  碎片可能會成為嚴重的性能問題尤其是在大型堆空間的情況下更是如此在垃圾收集期間壓縮堆空間將會解決這一問題但會影響性能因為壓縮大型堆空間開銷太大避免壓縮也有問題堆的部分空間將無法使用從而導致頻繁進行垃圾收集同樣位置也會影響處理器緩存的性能
  WebLogic JRockit使用滑動壓縮窗口解決了這一問題在每次垃圾收集期間每次壓縮堆的一個不同的小部分在窗口大小適當的情況下堆的性能與完全壓縮一樣好而垃圾收集的開銷卻與不壓縮一樣小
  當SOA Java開發人員將他們的應用程序部署到使用JRockit的基於Intel Itanium 微處理器的平台上以後既可以提高運算能力同時又能獲得所需的性能和可靠性機不可失馬上使用這種技術吧!您最終會獲益匪淺
  Itanium是Intel公司或其子公司在美國及其他國家的商標或注冊商標


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26578.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.