JVM包括類加載子系統(tǒng)、堆、方法區(qū)、棧、本地方法棧、程序計數(shù)器、直接內(nèi)存、垃圾回收器、執(zhí)行引擎。
1. 類加載子系統(tǒng):類加載子系統(tǒng)負(fù)責(zé)加載class信息,加載的類信息存放于方法區(qū)中。
2. 直接內(nèi)存 直接內(nèi)存是在Java堆外的、直接向系統(tǒng)申請的內(nèi)存空間。訪問直接內(nèi)存的速度會由于Java堆。出于性能的考慮,讀寫頻繁的場合可能會考慮使用直接內(nèi)存。
3. 垃圾回收器:垃圾回收器可以對堆、方法區(qū)、直接內(nèi)存進(jìn)行回收。
4. 執(zhí)行引擎:執(zhí)行引擎負(fù)責(zé)執(zhí)行虛擬機(jī)的字節(jié)碼,虛擬機(jī)會使用即時編譯技術(shù)將方法編譯成機(jī)器碼后再執(zhí)行。