《Java平臺體系》——第二章 JVM——Java字節碼程序的執行過程


Java字節碼程序的執行過程

Java程序在啓動的時候首先交給JVM(一個JVM的運行創建一個獨立的進程)一個擁有public static void main(string[] args)函數的類,JVM通過引導類加載器(Bootstrap ClassLoader)加載該類,加載完成之後進行校驗、內存填充和結構化(即連接--校驗/準備/分解),然後啓用一個線程執行main函數(大多數可執行程序都有像main一樣的入口函數約定,有些地方可以成爲入口地址),在執行main函數的過程中碰到新的類,將會再次用ClassLoader加載該類,重複連接,並且繼續執行main中調用的其它函數,依次反覆,直到特定的終止條件發生,程序退出。

JVM執行連接是典型的動態鏈接,也就是在執行過程中按需加載類,所有加載類的工作都交由ClassLoader來完成。在後面談到的Java字節碼類文件格式​就是ClassLoader加載之後交給虛擬機的字節碼格式,換句話來說JVM不管ClassLoader之前的類來源和格式,它只管ClassLoader加載之後的格式,理解這點很重要。 

ClassLoader分爲系統級和用戶自定義級兩類,通過用戶自定義類加載器,可以完成自定義的類加載方式(如何自定義請參考該章的實戰​部分)。

關於更多Java字節碼的執行過程細節,在後面內容JVM抽象架構​中將會更進一步提到。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章