Java是怎麼運行的?

前期瞭解知識

程序語言是什麼?

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

有哪些程序語言?

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

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

翻譯的方式有哪些?

1.編譯
2.解釋

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

衍生
程序語言的分類
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編譯器    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章