[英]What is the use of JVM if JIT is performing bytecode conversion to machine instructions
JIT只是JVM的一部分 。 其他部分包括字節碼解釋器,類加載驗證和鏈接機制,以及反射,I / O等內容的本機代碼支持。
從這個意義上說,JIT並沒有使JVM運行得更快。 相反,它使Java代碼運行得更快......而不是JVM只是解釋它。
實際上,JVM 確實開始解釋字節碼。 經過一段時間后,JVM使用其JIT編譯器將大量使用的方法編譯為本機代碼,使用在解釋時收集的統計信息來調整手頭問題的代碼。
順便說一下,你引用的這部分文字是笨拙的,技術上不准確:
實時(JIT)編譯器是運行時解釋器的一個特性... (上下文)
實際上,JIT不是解釋器的一個特性。 相反,JIT是與解釋器一起工作的JVM的功能。
要明確:
JVM執行以下所有操作:
它保留在操作系統的頂層,並提供編譯的java程序和操作系統之間的抽象。 這樣,java編譯的程序就不必擔心它必須工作的平台。 Java程序將代碼編譯為JVM可以理解和執行的字節碼。
JIT
當JVM編譯類文件時,它不會完成完整的類文件; 它根據需要僅編譯其中的一部分。 這避免了對完整源代碼的大量解析。 這種類型的編譯稱為JIT或Just-In-Time編譯。 JVM是依賴於平台(OS)的代碼生成JIT是面向平台的,生成本機字節代碼,因此它比JVM更快:)
Java虛擬機(JVM)提供了運行Java程序的整個環境。 它與操作系統集成,加載類並運行程序。 Just-In-Time編譯器(JIT)只是一小部分可以被禁用(-Xint),但是在啟用時,它提供了有用的性能改進。 已經存在不包含JIT的JVM的實現,以及通過將Java預編譯為與傳統語言(例如C或C ++)相同的機器代碼而實現的實現。
它及時編譯它以便JVM進行優化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.