浅学JAVA类加载-学习笔记1(转载)

Java ClassLoader 
Java的类加载器是个什么,如何运做... 学习下. 

类加载器使J具有动态性,J程序是由许多类组成,每个类生成一个文件,互相对应. 
执行时JVM找到J程序需要的类并载入内存. 
就是把硬盘的.CLASS文件复制一份到内存中,并初始化 

例: 

Java代码  收藏代码
  1. class A{  
  2.    public void print(){  
  3.        System.out.println("class A");  
  4.    }  
  5. }  
  6. class B{  
  7.     public void print(){  
  8.         System.out.println("class B");  
  9.     }  
  10. }  
  11.   
  12. public class Main{  
  13.     public static void main (String[] args){  
  14.        A a=new A();  
  15.        a.print();  
  16.        B b=new B();  
  17.        b.print();  
  18.     }  
  19. }  



执行 java -verbose:class Main 

Java代码  收藏代码
  1. [Loaded java.io.FilePermission from shared objects file]  
  2. [Loaded java.io.FilePermission$1 from shared objects file]  
  3. [Loaded java.io.FilePermissionCollection from shared objects f  
  4. [Loaded java.security.AllPermission from shared objects file]  
  5. [Loaded java.security.UnresolvedPermission from shared objects  
  6. [Loaded java.security.BasicPermissionCollection from shared ob  
  7. [Loaded java.security.Principal from shared objects file]  
  8. [Loaded java.security.cert.Certificate from shared objects fil  
  9. [Loaded Main from file:/C:/wang/]  
  10. [Loaded A from file:/C:/wang/]  
  11. class A  
  12. [Loaded B from file:/C:/wang/]  
  13. class B  
  14. [Loaded java.lang.Shutdown from shared objects file]  
  15. [Loaded java.lang.Shutdown$Lock from shared objects file]  



先把核心类库载入内存,然后可以清楚的看到载入了J程序的类Main.class,A.class 
B.class到内存中. 

当然,如果程序中先new一个B的对象调用print方法,在new个A的对象调用print方法, 
就是载入Main.class,B.class,A.class 

java.exe找到JRE,运行时环境执行.class文件. 

  預先载入,按需求載入 

在自己写的类中,B.class和A.class在用到这些类的时候才回被载入... 

把程序B实例化的例子和调用方法的语句注释后,B类就不会被载入. 

Java代码  收藏代码
  1. [Loaded Main from file:/C:/wang/]  
  2. [Loaded A from file:/C:/wang/]  
  3. class A  
  4. [Loaded java.lang.Shutdown from shared objects file]  
  5. [Loaded java.lang.Shutdown$Lock from shared objects file]  


只载入了A类和主类. 

不管如何,总会载入JAVA的基础类库,既JAVA程序必须的类,预先载入. 
自己写的类载入就是按需求载入. 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值