java 类装载器学习笔记

java  类装载器

jvm 主要包含三部分 : 1.类装载器  2.类效验器  3.类解释器


类装载器 :

1.启动类装载器(Bootstrap Loader:C编写的):用特定于本地操作系统的代码来实现,属于java虚拟机的内核,用于jvm启动时装载java基础类

库(即rt.jar文件中的类).

2.标准扩展类(载器(Extended Loader:java编写的):负责装载存放载<JAVA_HOME>/jre/lib/ext目录下的jar包中的类

3.类路径装载器(AppClassLoader:java编写的):负责加载应用程序的启动执行类


当我们的某个类MyClass.class请求加载时,JVM会看 启动类装载器,标准扩展类装载器 这2个加载器有没有加载这个类,如果加载了就放弃当前

的这个类加载器,由于之前没有使用启动类装载器,标准扩展类装载器加载这个类,所有JVM还会用类路径装载器加载.

 

/*测试你所使用的 JVM 的 ClassLoader */ 

public class LoaderSample
{ 
       public static void main(String[] args)  { 
              Class c; 

              ClassLoader cl;               

              cl = ClassLoader.getSystemClassLoader(); 
              System.out.println(cl);               

              while (cl != null)  { 
                     cl = cl.getParent(); 
                     System.out.println(cl);        
              }   

              try { 

                     c = Class.forName(“java.lang.Object”); 
                     cl = c.getClassLoader(); 
                     System.out.println(“java.lang.Object’s loader is ” + cl);  
                     c = Class.forName(“LoaderSample”); 
                     cl = c.getClassLoader(); 
                     System.out.println(“LoaderSample’s loader is ” + cl); 
              } 
              catch (Exception e) 
              { 
                     e.printStackTrace(); 
              } 
       } 


 

输出结果:            

 第一行表示,系统类装载器实例化自类 sun.misc.Launcher$AppClassLoader

 第二行表示,系统类装载器的 parent 实例化自类 sun.misc.Launcher$ExtClassLoader

 第三行表示,系统类装载器 parentparentbootstrap

 第四行表示,核心类 java.lang.Object 是由 bootstrap 装载的

 第五行表示,用户类 LoaderSample 是由系统类装载器装载的

 

-------------------------------------------------------------------------------------------------
相关:
1.对于每一个要使用的类首要的任务就是将类的字节码数据装载进来,载入内存中对应一个 java.lang.Class实例.

2. 面向对象中任何事物都可以用一个类来描述,现在我们用一个类去描述另一个类,这个类就是java.lang.Class,我们由三种方法可以获取这

个对象,1.类名,class 2.对象.getClass() 3.Class,forName(类名)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值