我真的在努力瞭解以下的事情什麼用JVM的,如果JIT正在執行的字節碼轉換爲機器指令
以前我知道:
當一個Java程序被編譯,將產生.class
文件。在那個代碼中是以字節的形式。然後JVM
將把該字節代碼翻譯成機器可理解的格式。
現在我看到在one of the questions in SO
一個剛剛在實時(JIT)編譯器是運行時 解釋的特點,即不是每一種方法 被調用時解釋字節碼,將將字節碼編譯成機器碼 跑步機器的指令
所以這裏JIT將字節碼轉換爲機器指令。那麼什麼是JVM的用法。我們可以用JIT來做到這一點。據我所知,JIT只是爲了提高JVM的性能。
在此先感謝..
但我看到聲明JIT編譯整個類文件once.But在您的聲明jvm正在編譯。請解釋 – Anusha 2013-05-08 11:44:07
@Anusha yah ... JVM執行編譯部分[逐行]本地解釋器java..but JIT是可選的,它也可以編譯,而不是所有的只是必要的方法/功能。 對於一個案例,請考慮: JIT編譯器不檢查Java邊界條件,例如空指針或數組越界異常。 JIT編譯器知道它有一個空指針異常的唯一方法是由操作系統引發的一個信號。 – 2013-05-08 12:05:52
這只是錯誤的。 javac Java編譯器解析Java源代碼並將其編譯爲Java字節碼(與機器無關),即.class文件。 JIT編譯器將該字節碼編譯爲本地機器代碼(CPU專用)。 JIT輸出機器代碼仍然執行邊界檢查和Java異常處理。 – arjunyg 2017-08-30 19:04:41