談談你對 Java 平臺的理解?“Java 是解釋執行”,這句話正確嗎?
Java 本身是一種面向物件的語言,最顯著的特性有兩個方面,一是所謂的“一處編譯,處處運行”(Write once,run anywhere),能夠非常容易地獲得跨平臺能力;另外就是垃圾收集(GC,Garbage Collection),Java通過垃圾收集器(Garbage Collector)回收分配記憶體,大部分情況下,我們不需要自己操心記憶體的分配回收,
我們日常會接觸到JRE(Java Runtime Environment) 或者JDK(Java Development Kit),JRE,也就是Java 運行環境,包含了JVM和Java類別庫,以及一些模塊等,而JDK可以看作是JRE的一個超集,提供了更多工具比如編譯器,各種診斷工具等,
對于“Java 是解釋執行”這句話,這樣的說法不太準確,我們開發的源代碼,首先通過Javac(編譯器)編譯成位元組碼(bytecode),然后,在運行時,通過Java 虛擬機(JVM)內嵌的解釋器將位元組碼轉換為最終的機器碼,但是常見的JVM ,比如Oracle JDK 提供的Hotspot JVM,也提供了JIT(Just-In-Time)編譯器,也就是通常所說的動態編譯器,JIT能夠在運行時將熱點代碼編譯成機器碼,這種情況下部分熱點代碼就屬于編譯執行,而不是解釋執行了,
解釋執行:將位元組碼一行一行地翻譯為機器碼執行,
編譯執行:以方法為單位,將位元組碼一次性翻譯為機器碼后執行,
結論:目前主流的JVM 都是混合模式(-Xmixed),即解釋運行 和編譯運行配合使用,
補充--優缺點:
由于編譯執行是將翻譯過后的機器碼保存下來,所以代碼二次運行時不需要重新翻譯,可以直接運行機器碼,所以效率更快,解釋執行因為不需要提前翻譯,所以啟動更快,
本文來自博客園,作者:子庸,轉載請注明原文鏈接:https://www.cnblogs.com/slzy/p/17070352.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/542470.html
標籤:其他
上一篇:python圖片拼接
