java虛擬機器具體是怎樣運行java字節碼的?
從虛擬機器的角度來看,執行java程式碼首先需要將它編譯而成的class檔案載入到java虛擬機器中。載入後的java類別會被存放在方法區中。實際運行時,虛擬機會執行方法區的程式碼。 (建議學習:java課程)
#在運作過程中,每當呼叫進入一個java方法,java虛擬機會在目前執行緒的java方法堆疊中產生一個堆疊幀,用於存放局部變數以及字節碼的操作數。這個堆疊幀的大小是事先計算好的,而且java虛擬機器不要求堆疊幀在記憶體空間連續分佈。
在hotspot裡面,上述翻譯過程有兩種形式:第一種是解釋執行,即逐條將字節碼翻譯成機器碼並執行;第二種是即時編譯(JIT),即將一個方法包含的所有字節碼編譯成機器碼後再執行。
前者的優點在於無需等待編譯,而後者的優勢在於實際運行速度更快。 HotSpot預設採用混合模式,綜合了解釋執行和即時編譯兩者的優點。他會先解釋執行字節碼,而後將其中反覆執行的熱點程式碼以方法為單位進行即時編譯。
java虛擬機器的運作效率究竟怎麼樣?
即時編譯是建立在程式符合二八定律的假設上,也就是百分之二十的程式碼佔據了百分之八十的計算資源。
對於佔據大部分的不常用的程式碼,我們無需好分時間將其編譯成機器碼,而是採用解釋執行的方式運行;另一方面,對於僅佔據小部分的熱點程式碼,我們則可以將其編譯為機器碼,以達到理想的運行速度。
理論上講,即時編譯後的java程式的執行效率,是可能超過c 的。這是因為與靜態編譯相比,即時編譯擁有程式的運行時信息,並且能夠根據這個信息做出相應的最佳化。
舉個栗子:對於一個虛方法的調用,儘管有很多個目標方法,但在實際運行過程中他可能只調用其中一個。這個資訊可以被即時編譯器所利用,來規避虛方法呼叫的開銷。
以上是java程式碼是怎麼運行的的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

記事本++7.3.1
好用且免費的程式碼編輯器

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),