Java是怎麼運行的?

前期瞭解知識

程序語言是什麼?

程序語言就是向人和計算機描述計算的記號。性能

有哪些程序語言?

程序語言分類(按照級別分類)
按照級別分類
1.低級語言
2.高級語言
(1)面向過程語言
(2)面嚮對象語言優化

規律:越高級程序語言越靠近人的理解方式,可是這樣在計算機運行卻不行,因此須要將程序語言翻譯成計算機所可以識別的語言。

翻譯的方式有哪些?

1.編譯
2.解釋this

兩種方式的區別和優缺點
1.編譯會生成中間文件,解釋不須要生成中間文件,邊解釋邊運行
2.編譯比解釋更快
3.解釋檢查代碼是否有錯誤更仔細比編譯,由於解釋是一句一句的解釋。spa

衍生
程序語言的分類
1.編譯型(C,C++等)
2.解釋型(JS等)
3.半編譯半解釋(JAVA等)

正文

Java運行的流程
圖片描述

.class文件翻譯成機器碼運行代碼

前期知識點
JVM內存分配
圖片描述
方法區:類加載到方法區
pc寄存器:存放各個線程執行的位置
Java方法棧:調用方法的時候會生成棧幀,用來存儲局部變量(廣義的,包括this指針和傳遞的方法參數)和操做數。線程

.class字節碼翻譯機器碼運行翻譯

圖片描述

按照二八定律,20%的代碼用了80%的運算時間,因此這20%的代碼可不能夠用更快的方式來運行,因此即時編譯器運勢而生。

分類:
1.解釋器解釋
2.即時編譯器編譯指針

1.c1編譯器:client編譯器,對啓動性能要求高的,優化簡單,編譯簡單
2.c2編譯器:server編譯器,對峯值性要求高的,優化複雜,編譯時間長
3.Graal編譯器
相關文章
相關標籤/搜索