合肥Java培訓
達內合肥java培訓中心

18130056197

熱門課程

使用虛擬機運行java代碼的優勢分析


虛擬機是程序員在學習java編程開發的時候需要重點掌握的一個編程技術知識點,而今天我們就通過案例分析來了解一下,為什么要將java代碼在虛擬機中運行,下面就開始今天的主要內容吧。

使用虛擬機運行java代碼的優勢分析

Java為什么要在虛擬機中運行

剛才我們談到C++是直接把代碼編譯成機器碼的,但因為各個平臺的架構不一樣,CPU能處理的指令集也不一樣,所以如果要在另一個平臺上運行C++代碼,就必須用該平臺對應的C++代碼編譯器重新編譯一遍才可以.Java一開始就意識到需要跨平臺運行,所以Java設計了虛擬機,先將Java代碼編譯成字節碼(class文件),這是虛擬機能夠識別的指令,再由虛擬機內部將字節碼翻譯成機器碼,所以我們只需要有Java字節碼,就可以在不同平臺的虛擬機中運行,這也就是我們一直說的"一次編譯,到處運行".

Java虛擬機如何運行Java字節碼

我們JDK所用的虛擬機名為HotSpot虛擬機,他會將所有class文件加載進來,加載后的Java類會被放置在方法區,后面運行時會執行其中的代碼.Java虛擬機會在內存中劃分出幾塊,包括程序計數器,本地方法棧,Java虛擬機棧,堆以及方法區.

不過光是Java字節碼還是無法運行,Java虛擬機還需要將字節碼翻譯成機器碼,HotSpot有2種形式:一種是解釋執行,即將字節碼逐條翻譯成機器碼并運行;二種是即時編譯(JIT),他會將一個方法內的所有字節碼編譯成機器碼再執行.

前者的優勢無需等待編譯,但逐條解釋的代價就是運行速度會比后者慢,HotSpot默認采用混合模式,它會先解釋執行字節碼,然后對于反復執行的熱點代碼會去進行即時編譯.

即時編譯是監理在復合二八定律的基礎上,即百分之20的代碼占據百分之80的計算資源.對于不常用的代碼我們無需消耗時間在編譯成機器碼上,采用解釋執行就可以,而對于熱點代碼我們可以將其編譯成機器碼以提升運行速度.

HotSpot內置了幾個即時編譯器:ClientComplier和ServerComplier,簡稱為C1、C2編譯器,以便在編譯時間和生成代碼的執行效率之間做取舍,C1編譯時間更快,C2編譯質量更高.

【免責聲明】本文系本網編輯部分轉載,轉載目的在于傳遞更多信息,并不代表本網贊同其觀點和對其真實性負責。如涉及作品內容、版權和其它問題,請在30日內與管理員聯系,我們會予以更改或刪除相關文章,以保證您的權益!更多內容請在707945861群中學習了解。

預約申請免費試聽課程

         

上一篇:java編程開發的循環結構類型都有哪些
下一篇:網絡I/O模型都有哪些類型

網絡I/O模型都有哪些類型

使用虛擬機運行java代碼的優勢分析

java編程開發的循環結構類型都有哪些

混合云的優勢都有哪些

選擇城市和中心
江西省

貴州省

廣西省

海南省

38部杂交小说