JVM編譯淺析

1.編譯器與解釋器的區別與優劣

編譯器:將完整的用戶代碼經過一系列處理翻譯成完整的目標語言。
解釋器:直接利用用戶提供的輸入執行源程序中的操作。因此可以逐個語句的執行源程序。
編譯器產生的機器語言目標程序通常比解釋器快很多,代碼的優化效果也比解釋器好。但是利用解釋器逐句執行的特點,解釋器更容易進行錯誤診斷,與用戶的交互效果也比編譯器好。

2.一個編譯器的結構

一個編譯器可以分爲前端和後端

  • 前端包括詞法分析,語法分析,語義分析,中間代碼生成。
  • 後端包括中間代碼優化,代碼生成,機器相關代碼優化等。

另外在jvm中實際上是可以解釋器和編譯器共存的,而且大多數虛擬機都採取兩者共存的形式,因爲解釋器方式可以快速啓動運行,省去編譯的時間;接着在運行的過程中,編譯器逐漸把代碼都編譯成本地代碼之後,便可以獲得更高的執行效率。

3.常見編譯優化技術

  • 逃逸分析:如果確定一個對象不會逃出方法之外,則可以在棧上分配,隨棧幀出棧而銷燬,速度更快;再是標量替換,可以將一個大對象,分解成多個小變量;再是同步消除,確定某變量不會逃出線程,則直接取消其同步鎖

3.編譯過程

在這裏插入圖片描述

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