JVM加載Class文件的原理機制
Java語言是一種具有動態性的解釋型語言,類(Class)只有被加載到JVM后才能運行。當運行指定程序時,JVM會將編譯生成的.class 文件按照需求和一定的規則加載到內存中,并組織成為一個完整的Java應 用程序。這個加載過程是由類加載器完成,具體來說,就是由 ClassLoader和它的子類來實現的。類加載器本身也是一個類,其實質是 把類文件從硬盤讀取到內存中。
類的加載方式分為隱式加載和顯示加載。隱式加載指的是程序在使用new 等方式創建對象時,會隱式地調用類的加載器把對應的類加載到JVM中。 顯示加載指的是通過直接調用class.forName()方法來把所需的類加載 到JVM中。
任何一個工程項目都是由許多類組成的,當程序啟動時,只把需要的類加 載到JVM中,其他類只有被使用到的時候才會被加載,采用這種方法一方 面可以加快加載速度,另一方面可以節約程序運行時對內存的開銷。此 外,在Java語言中,每個類或接口都對應一個.class文件,這些文件 可以被看成是一個個可以被動態加載的單元,因此當只有部分類被修改 時,只需要重新編譯變化的類即可,而不需要重新編譯所有文件,因此加 快了編譯速度。
在Java語言中,類的加載是動態的,它并不會一次性將所有類全 部加載后再運行,而是保證程序運行的基礎類(例如基類)完全加 載到JVM中,至于其他類,則在需要的時候才加載。
類加載的主要步驟:
?裝載。根據查找路徑找到相應的class文件,然后導入。
?鏈接。鏈接又可分為3個小步:
?檢查,檢查待加載的c lass文件的正確性。
?準備,給類中的靜態變量分配存儲空間。
?解析,將符號引用轉換為直接引用(這一步可選)
?初始化。對靜態變量和靜態代碼塊執行初始化工作。
Java JVM
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。