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

浙公网安备 33010602011771号