目录

裴先生
裴先生
发布于 2021-03-09 / 1 阅读
0
0

JVM加载Class文件的原理机制是什么?

原创
JVM是通过类加载器(ClassLoader)将Class字节码文件加载进内存的;
根加载器BootStrap):一般由本地代码实现,主要负责的是JVM基础核心库类装载(如rt.jar扩展加载器 (Extension):从BootStrap继承而来,负责加载java.ext.dirs系统属性指定目录中的类库; 系统加载器System):别名应用类加载器,继承自Extension,应用最为广泛的,负责从环境变量classpath或者系统属性java.class.path指定目录中装载类; 用户自定义加载器:默认继承自System,特殊定制加载需求才会使用;
开发编写.java文件经过编译生成.class字节码文件,又称类文件,不可执行需要以下几步;
通常是创建一个字节数组读取.class文件中数据进入内存,接着就会产生与所加载类对应的Class对象;
此时的Class对象仍不完整,不可用,需要经过验证、准备(为静态变量分配内存并设置默认的初始值)、解析(将符号引用替换为直接引用)三步;
当前被加载的类存在直接父类且还未被初始化,先初始化父类(重复此三步:加载连接初始化); 如果存在初始化语句,依次执行这些语句(在父类加载的时候也需要做);
开始于JDK 1.2,英文缩写PDM;
JVM自带的BootStrap是根加载器,其他的加载器有且仅有一个父类加载器; 类的加载首先请求父类加载器,父类加载器加载不了时,再由器子类加载器加载; JVM不会向Java程序开放任何对BootStrap的接口;

原创

版权声明:本博客原创文章,由 裴先生 2021年03月09日 发表。
转载说明:除特殊说明外本站文章皆由 CC BY-NC-SA 4.0 协议发布,转载须注明出处。


评论