小公司:Java從編譯到執(zhí)行,發(fā)生了什么?
《對線面試官》系列目前已經(jīng)連載25篇啦!有深度風(fēng)趣的系列!
-
【對線面試官】Java注解 -
【對線面試官】Java泛型 -
【對線面試官】 Java NIO -
【對線面試官】Java反射 && 動態(tài)代理 -
【對線面試官】多線程基礎(chǔ) -
【對線面試官】 CAS -
【對線面試官】synchronized -
【對線面試官】AQS&&ReentrantLock -
【對線面試官】線程池 -
【對線面試官】ThreadLocal -
【對線面試官】CountDownLatch和CyclicBarrier -
【對線面試官】為什么需要Java內(nèi)存模型? -
【對線面試官】List -
【對線面試官】Map -
【對線面試官】SpringMVC -
【對線面試官】Spring基礎(chǔ) -
【對線面試官】SpringBean生命周期 -
【對線面試官】Redis基礎(chǔ) -
【對線面試官】Redis持久化 -
【對線面試官】Kafka基礎(chǔ) -
【對線面試官】使用Kafka會考慮什么問題? -
【對線面試官】MySQL索引 -
【對線面試官】MySQL 事務(wù)&&鎖機(jī)制&&MVCC -
【對線面試官】MySQL調(diào)優(yōu)
總結(jié)下今天的內(nèi)容,并畫了個圖(三連三連!三連可以加快更新速度!):
-
Java跨平臺因?yàn)橛蠮VM屏蔽了底層操作系統(tǒng) -
Java源碼到執(zhí)行的過程,從JVM的角度看可以總結(jié)為四個步驟:編譯->加載->解釋->執(zhí)行 -
「編譯」經(jīng)過 語法分析、語義分析、注解處理 最后才生成會class文件 -
「加載」又可以細(xì)分步驟為:裝載->連接->初始化。裝載則把class文件裝載至JVM,連接則校驗(yàn)class信息、分配內(nèi)存空間及賦默認(rèn)值,初始化則為變量賦值為正確的初始值。連接里又可以細(xì)化為:驗(yàn)證、準(zhǔn)備、解析 -
「解釋」則是把字節(jié)碼轉(zhuǎn)換成操作系統(tǒng)可識別的執(zhí)行指令,在JVM中會有字節(jié)碼解釋器和即時編譯器。在解釋時會對代碼進(jìn)行分析,查看是否為「熱點(diǎn)代碼」,如果為「熱點(diǎn)代碼」則觸發(fā)JIT編譯,下次執(zhí)行時就無需重復(fù)進(jìn)行解釋,提高解釋速度 -
「執(zhí)行」調(diào)用系統(tǒng)的硬件執(zhí)行最終的程序指令
文章以純面試的角度去講解,所以有很多的細(xì)節(jié)是未鋪墊的。
鑒于很多同學(xué)反饋沒看懂【對線面試官】系列,基礎(chǔ)相關(guān)的知識我確實(shí)寫過文章講解過啦,但有的同學(xué)就是不愛去翻。
我把這些上傳到網(wǎng)盤,你們有需要直接下載就好了。
掃碼關(guān)注【面試造火箭】
評論
圖片
表情
