java学习——ClassLoader

ClassLoader

1.jvm加载.class文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yp3JK3Fw-1590200737437)(https://www.xupeng.life/upload/2020/3/image-be1985e2af484f89ae7e13979238da7f.png)]
jvm通过classloader加载符合格式的class文件加载到内存,然后通过execution engine对其进行解析在操作系统执行。

2.classloader的作用与分类

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

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

3.classloader加载类的方式

加载类的方式:双亲委派的方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F4uaOeeT-1590200737438)(https://www.xupeng.life/upload/2020/3/image-abee5eef91fc44c2bc2dca1ff6f09faf.png)]
即先通过找上一层是否加载过,如果都没有,则从最顶层开始寻找类

4.类的装载过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xQtgw0nV-1590200737439)(https://www.xupeng.life/upload/2020/3/image-c852bb89b8504513bc85da79c0a330ce.png)]

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

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

4.loadclass和forName

loadclass得到的class还没有链接:
image.png
forname得到的class已经初始化了完成了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-padnvKOu-1590200737443)(https://www.xupeng.life/upload/2020/3/image-e2260586aba943e6b084fedb91e1addb.png)]

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读