クラスローダの詳細分析


クラスローダの詳細分析
java           

        ,Java          

   System.exit()  
        
                     
             Java     

クラス・ローダ接続と初期化
  :            

  :
      :           
      :           ,          
      :               

   :               


Java              :
        
        
   Java                Java  “      ”       

    (  ):
          
                 ,           
            
      (  Class.forName(“com.shengsiyuan.Test”) )
             
    Java               (Java Test)
            ,    Java    
    
                 ,           


クラスのロード
          .class                ,                ,          java.lang.Class  ,                

  .class     :

1.          
2.      .class  
3. zip,jar        .class  
4.         .class  
5. Java        .class  

                Class  
Class                 ,   Java                     

          :
1.Java         
         (Bootstrap)
          (Extension)
          (System)

2.          
    java.lang.ClassLoader   
                

                          

JVM                           ,               .class          ,                        (LinkageError  )

                ,              

クラスの検証
     ,       。                                    。

       

   1.         :       java        
   2.     :       java       ,    final        ,  final          
   3.      :         java         。      java  (           ),                    ,                 。                   ,           。
   4.          :               。

クラスの準備
     ,java              ,         。
   

クラスの解析
     ,java                         。   Worler   gotoWork()      Car  run()  ,   Worker        ,      Car  run()
       ,  run()             。     ,java                  ,     Car  run()            ,          



クラスの初期化
          ,java            ,            。
    ,             :(1)              :(2) 
           。                           ,java                            

クラスの初期化手順
(1)              ,           。
(2)          ,             ,          。
(3)           ,             

クラス初期化話のタイミング
    (  )

1.         new   
2.              ,            
3.         
4.   (  Class.forName(“com.shengsiyuan.Test”) )
5.          
6. Java               (Java Test)

        ,    Java

クラスを初期化しても実装されたインタフェースは初期化されません
     java          ,               ,            。
        (1)          ,              。
        (2)         ,           
      ,                            。                   ,           
    
                                    ,                 

  ClassLoader  loadClass        ,          ,          。

クラスローダ
            java     。 jdk1.2  。              ,    
          java     。       ,  java            ,                  。
     java        loader1    Sample  。loader1              Sample ,         ,          ,
           loader1    Sample 。
    
          :
1.  (Bootstrap)    :
2.   (Extension)    
3.   (System)    

        ,java      java.lang.ClassLoader。