码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA - 深入JAVA 虚拟机 2

时间:2017-07-06 15:13:18      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:实现   java代码   misc   cti   bsp   方式   类型   错误   解析   

类的两种类型的类加载器

-Java虚拟机自带的加载器

  根类加载器(Bootstrap): 使用C++编写,programer can not abtain this class.

   扩展类加载器(Extension): 使用Java代码实现

  系统类加载器(System):使用Java代码实现

 

-用户自定义的类加载器

  java.lang.ClassLoader的子类:  (public abstract class ClassLoader)

  用户可以定制类的加载方式:

 


package practise;

public class TestClassLoader {
    
    public static void main(String[] args) {
        Class clz=null;
        try {
            clz = Class.forName("java.lang.String");
            System.out.println(clz.getClassLoader());
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        Class clz2=null;
        
        try {
            clz2 = Class.forName("practise.c");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
                
        System.out.println(clz2.getClassLoader());
        
    }

}

class c{
    
    
}
null ---> 这个说明这个是根类加载器
sun.misc.Launcher$AppClassLoader@73d16e93 --->这个说明是应用加载器

 

JVM规范允许类加载器在预料某个类将要被使用时就预先加载它,如果在预先加载的过程中遇到了.class

文件缺失或者存在错误,类加载器必须在程序首次主动使用该类时才报告错误。

 

类被加载后,就进入连接阶段,连接就是将已经读入到内存的类的二进制数据合并到虚拟机的运行时环境中去

 

类的验证的内容:

  -类文件的结果检查

  -语义检查

  -字节码验证

  -二进制兼容性的验证

 

类的准备阶段

技术分享

类的解析

技术分享

 

JAVA - 深入JAVA 虚拟机 2

标签:实现   java代码   misc   cti   bsp   方式   类型   错误   解析   

原文地址:http://www.cnblogs.com/andypengyong/p/7126251.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!