【读书会第十二期】Java虚拟机类加载机制

举报
蛋挞挞挞挞挞 发表于 2022/05/19 11:14:50 2022/05/19
【摘要】 代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。

类加载的各个阶段

类加载的过程

从.java文件编译成.class文件,在JVM进行加载,对字节码以及语法进行验证, 准备,并进行解析符号引用或直接引用,进行初始化包括初始化为默认值调用构造函数,在程序中进行使用,最后进行卸载。

类加载的时机

类的加载过程

加载:从文件中读取作为二进制流

验证:验证语法

准备

解析:解析符号引用和直接引用

初始化

验证

文件格式验证:是否符合Java的文件格式要求

元数据验证

字节码验证:不能做不符合语法的要求

符号引用验证:是否已经存在

解析

符号引用:唯一的ID 

直接引用:引用的对象必须在内存中

类加载器

实现类的加载动作

不同的加载器加载的类不相同

类加载机制

全盘负责:加载某个Class类,它所关联的类也要由你加载。

双亲委派模型:先让父类去加载,如果父类加载不了再自己去加载

缓存机制:如果缓存中存在了所在的Class对象,那就不需要再重新加载,直接返回,如果不存在要进行加载。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。