亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java虛擬機運行代碼的過程

發布時間:2020-06-29 09:29:57 來源:億速云 閱讀:229 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關java虛擬機運行代碼的過程,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

從虛擬機的視角來看,執行java代碼首先需要將它編譯而成的class文件加載到java虛擬機中。加載后的java類會被存放在方法區中。實際運行時,虛擬機會執行方法區的代碼。  

java虛擬機運行代碼的過程

在運行過程中,每當調用進入一個java方法,java虛擬機會在當前線程的java方法棧中生成一個棧幀,用以存放局部變量以及字節碼的操作數。這個棧幀的大小是提前計算好的,而且java虛擬機不要求棧幀在內存空間里連續分布。

java虛擬機運行代碼的過程

在hotspot里面,上述翻譯過程有兩種形式:第一種是解釋執行,即逐條將字節碼翻譯成機器碼并執行;第二種是即時編譯(JIT),即將一個方法包含的所有字節碼編譯成機器碼后再執行。

前者的優勢在于無需等待編譯,而后者的優勢在于實際運行速度更快。HotSpot默認采用混合模式,綜合了解釋執行和即時編譯兩者的優點。他會先解釋執行字節碼,而后將其中反復執行的熱點代碼以方法為單位進行即時編譯。

java虛擬機的運行效率究竟怎么樣?

即時編譯是建立在程序符合二八定律的假設上,也就是百分之二十的代碼占據了百分之八十的計算資源。

對于占據大部分的不常用的代碼,我們無需好分時間將其編譯成機器碼,而是采用解釋執行的方式運行;另一方面,對于僅占據小部分的熱點代碼,我們則可以將其編譯為機器碼,以達到理想的運行速度。

理論上講,即時編譯后的java程序的執行效率,是可能超過c++的。這是因為與靜態編譯相比,即時編譯擁有程序的運行時信息,并且能夠根據這個信息做出相應的優化。

舉個栗子:對于一個虛方法的調用,盡管有很多個目標方法,但在實際運行過程中他可能只調用其中一個。這個信息可以被即時編譯器所利用,來規避虛方法調用的開銷。

關于java虛擬機運行代碼的過程就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南昌市| 建宁县| 易门县| 克东县| 分宜县| 嫩江县| 福清市| 方正县| 鹿泉市| 乐业县| 巩义市| 黔南| 泗阳县| 石楼县| 金堂县| 鄂伦春自治旗| 安阳市| 卓尼县| 齐齐哈尔市| 稷山县| 长泰县| 犍为县| 碌曲县| 左权县| 黔西| 拉萨市| 牟定县| 汕头市| 雷州市| 绥宁县| 广饶县| 南京市| 八宿县| 衡阳市| 卢龙县| 鄂温| 郯城县| 西藏| 治县。| 宣化县| 古田县|