java学习——ClassLoader

java学习——ClassLoader

Scroll Down

ClassLoader

1.jvm加载.class文件

image.png
jvm通过classloader加载符合格式的class文件加载到内存,然后通过execution engine对其进行解析在操作系统执行。

2.classloader的作用与分类

作用:将.class文件加载到内存中
分类:

1.bootstrapclassloader
加载核心库 java.*
2.extclassloader
加载扩展库 javax.*
3.applicationloader
加载程序所在目录
4.自定义类加载器
自定义的方式加载.class文件

3.classloader加载类的方式

加载类的方式:双亲委派的方式
image.png
即先通过找上一层是否加载过,如果都没有,则从最顶层开始寻找类

4.类的装载过程

image.png

加载(通过classloader加载class文件字节码,生成class对象)
---->校验(检查加载的class的正确性和安全性)---->准备(为类变量分配存储空间并设置类变量初始值)---->解析(JVM将常量池内的符号引用转换为直接引用)---->初始化(执行类变量赋值和静态代码块)

符号引用 :符号引用以一组符号来描述所引用的目标。符号引用可以是任何形式的字面量,只要使用时能无歧义地定位到目标即可,符号引用和虚拟机的布局无关

4.loadclass和forName

loadclass得到的class还没有链接:
image.png
forname得到的class已经初始化了完成了
image.png