類加載機制

          類加載機制
              敘述:類加載機制就是將.class文件加載到JVM,并形成class對象的機制。之后就可以對其實例化并使用,這個機制可以動態的加載外部的類、遠程下載的class文件,并且可以做到類之間的隔離。
              步驟:JVM加載的步驟:裝載、鏈接、初始化。
                      裝載:將class文件中的字節碼加載到JVM,并通過全名(org.test.Test)和類加載器(ClassLoader)來加載到JVM中。
                      鏈接:負責對裝載的二進制字節碼的格式進行檢驗,初始化類中的靜態標量并檢查類中調用的接口、類。最后對所有的屬性、方法進行檢驗。
                   初始化:初始化是執行靜態初始化代碼、構造器代碼和靜態屬性的初始化
                              出發的方式:1.new 2.反射 3.子類調用初始化 4.JVM啟動參數中的類
          ClassLoader:有4種ClassLoader負責加載類。
              1.Bootstrap ClassLoader
                  由C++實現的,來加載jre/lib/rt.jar、resources.jar等。在java中無法拿到此對象。
              2.Extension ClassLoader
                  用來加載java擴展包,jre/lib/ext/*.jar。
              3.System ClassLoader
                  用來加載參數中的指定的classpath的jar,在類中顯示對應的是AppClassLoader。
              4.User-Defined ClassLoad
                  是java開發人員繼承ClassLoader抽象類自行實現的ClassLoader,可以加載非classpath中的類(網絡下載的java、class),還可以在加載之前做一些事情。

          加載順序:
               首先要說明一個誤區,這個誤區是經常理解有問題的。
                  classloader加載的只是class(類),不要認為它加載的是對象,這樣你就會很是理解不了classloader加載順序。
                  classloader的順序是先父后子(這里因為Bootstrap ClassLoader在java中拿不到,所以他是最先完成加載的)
                  已委托的方式循序加載
                  例如:User-Defined ClassLoad有個一類要加載則先會去委托System ClassLoader加載依此類推,每個節點都會委托父節點去加載,
                          如果父節點沒有加載到自己再去加載,如果父節點加載了將吧加載的引用返回給自己。
                  兩個java類相同的條件不盡需要同樣的包名和class而且加載器也必須相同,這樣的類才算是統一各類。比如有classloaderA和classloaderB,都加在了
          Test類,兩次別加載的類是不一樣的。這也體現出了隔離性。

          posted on 2012-03-27 15:16 海峰 閱讀(148) 評論(0)  編輯  收藏 所屬分類: JVM理解


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 新营市| 德惠市| 海南省| 常德市| 龙山县| 珲春市| 莫力| 临邑县| 四平市| 泸州市| 芜湖县| 三穗县| 乐山市| 嘉义县| 和政县| 巩留县| 石屏县| 连平县| 谷城县| 长宁区| 青海省| 合江县| 峡江县| 晋城| 通江县| 株洲县| 朔州市| 读书| 永兴县| 北安市| 贵港市| 丰城市| 城固县| 安吉县| 彭州市| 昔阳县| 睢宁县| 莆田市| 老河口市| 阿坝县| 深水埗区|