一圖讀懂Java架構
阿新 • • 發佈:2018-11-16
一圖讀懂Java架構:
1,Java 類載入過程
類載入過程
2,Java 記憶體分割槽
方法區
堆區
虛擬機器棧區
程式技術器
本地方法棧
後三個都是執行緒私有
3,Java執行引擎
直譯器 + JIT實時編譯 +垃圾回收
儘管並不是所有的Java虛擬機器都採用直譯器與編譯器並存的架構,但許多主流的商用虛擬機器(如HotSpot),都同時包含直譯器和編譯器。
直譯器與編譯器兩者各有優勢:當程式需要迅速啟動和執行的時候,直譯器可以首先發揮作用,省去編譯的時間,立即執行。在程式執行後,隨著時間的推移,編譯器逐漸發揮作用,把越來越多的程式碼編譯成原生代碼之後,可以獲取更高的執行效率。當程式執行環境中記憶體資源限制較大(如部分嵌入式系統中),可以使用直譯器執行節約記憶體,反之可以使用編譯執行來提升效率。此外,如果編譯後出現“罕見陷阱”,可以通過逆優化退回到解釋執行。
HotSpot虛擬機器中內建了兩個即時編譯器:Client Complier和Server Complier,簡稱為C1、C2編譯器,分別用在客戶端和服務端。用Client Complier獲取更高的編譯速度,用Server Complier 來獲取更好的編譯質量。
垃圾回收器的介紹