1度苔、java平臺(tái)涉及方面:Java語(yǔ)言特性,包括泛型浑度、Lambda等語(yǔ)言特性;基礎(chǔ)類庫(kù)寇窑,包括集合、IO/NIO箩张、網(wǎng)絡(luò)甩骏、并發(fā)窗市、安全 等基礎(chǔ)類庫(kù)。
2饮笛、java類加載機(jī)制:常用版本JDK(如JDK 8)內(nèi)嵌的Class-Loader咨察,例如Bootstrap、?Application和Extension Class-loader;類加載大致過程:加載福青、驗(yàn)證摄狱、鏈接、初始化(這里參考了周志明的《深入理解Java虛擬機(jī)》无午,非常棒的JVM上手書籍);自定義Class-Loader等媒役。
3、常見的垃圾收集器:SerialGC宪迟、Parallel GC酣衷、?CMS、?G1等次泽。
4穿仪、java平臺(tái)藍(lán)圖:
5、java代碼執(zhí)行過程:
在運(yùn)行時(shí)意荤,JVM會(huì)通過類加載器(Class-Loader)加載字節(jié)碼啊片,解釋或者編譯執(zhí)行。主流Java版本中袭异,如JDK 8實(shí)際是解釋和編譯混合的一種模式钠龙,即所謂的混合模式(-Xmixed)。通常運(yùn)行在server模式的JVM御铃,會(huì)進(jìn)行上萬(wàn)次調(diào)用以收集足夠的信息進(jìn)行高效的編譯,client模式這個(gè)門限是1500次沈矿。Oracle Hotspot JVM內(nèi)置了兩個(gè)不同的JIT compiler上真,C1對(duì)應(yīng)前面說的client模式,適用于對(duì)于啟動(dòng)速度敏感的應(yīng)用羹膳,比如普通Java桌面應(yīng)用;C2對(duì)應(yīng)server模式睡互,它的優(yōu)化是為長(zhǎng)時(shí)間運(yùn)行的服務(wù)器端應(yīng)用設(shè)計(jì)的。 默認(rèn)是采用所謂的分層編譯(TieredCompilation)陵像。
-Xint:就是告訴JVM只進(jìn)行解釋執(zhí)行就珠,不對(duì)代碼進(jìn)行編譯
-Xcomp:這是告訴JVM關(guān)閉解釋器,不要進(jìn)行解釋執(zhí)行醒颖,或者叫作最大優(yōu)化級(jí)別
6妻怎、AOT(Ahead-of-Time Compilation),直接將字節(jié)碼編譯成機(jī)器代碼泞歉,這樣就避免了JIT預(yù)熱等各方 面的開銷逼侦,比如Oracle JDK 9就引入了實(shí)驗(yàn)性的AOT特性匿辩,并且增加了新的jaotc工具。
示例:
jaotc --output libHelloWorld.so HelloWorld.class?
jaotc --output libjava.base.so --module java.base
然后榛丢,在啟動(dòng)時(shí)直接指定就可以了铲球。
java -XX:AOTLibrary=./libHelloWorld.so,./libjava.base.so HelloWorld