jvm学习-1.类加载器

jvm体系结构

1.类加载器:
①定义:
负责加载class文件,class文件头有特定符号表示(cafe bebe),将class文件字节码内容加载到内存中去,
并将内容转换成方法区中的运行时数据结构(也就是类模板)并且classloader只负责class文件的加载,至于他是否可以运行,则有执行引擎来决定。

  ②加载器的类型
        自带的加载器: 根加载器(启动类加载器) bootstrap   c++编写  加载%JAVA_HOME%/jre/rt.jar里面的类
                       扩展加载器(extension)  java编写    加载%JAVA_HOME%/jre/lib/ext下面的jar包
                       应用程序加载器 applicationclassloader:加载classpath下的所有类
              
              MyCar car = new MyCar();
              car.getClass().getClassLoader();  //输出appclassloader
              car.getClass().getClassLoader().getParent(); //输出extclassloader
              car.getClass().getClassLoader().getParent().getParent(); //输出bootstrapclassloader

        自定义加载器:   ClassLoader的子类  用户定义类的加载方式  extend classloader
  
 ③classloader的双亲委派机制:
        当一个类收到类的加载请求 ,他自己不会加载这个类,而是交给父类去完成,每一个层次的类加载器都是如此
        。因此这个类加载请求都应该传递到启动类加载中,只有当父类加载器加载无法完成这个加载请求的时候,子类才会尝试自己去加载。

  ④java的沙箱安全机制:防止恶意代码攻击java
posted @ 2021-01-05 23:17  进丁520  阅读(47)  评论(0)    收藏  举报