类加载机制原理及过程详解

类加载机制原理及过程详解

类加载原理

JVM将class字节码文件通过类加载器加载到内存中,并将这些静态数据转化为方法区的运行数据结构,在堆中生成一个代表这个类java.lang.Class对象,作为方法区类数据的访问入口

类的生命周期

加载、校验、准备、解析、初始化
为支持动态绑定,解析可以在初始化之后执行

加载
主要由类加载完成
通过类的全限定名来获取定义此类的二进制字节流
将这个类的字节流代表的静态存储结构转为方法区的运行是数据结构
在堆中生成一个代表此类的java.lang.Class对象,作为一个访问方法区数据结构的入口

校验
确保class文件的字节流信息符合虚拟机的要求,并且不会危害虚拟机的安全
文件格式验证:基于字节流验证
元数据验证、字节码验证、符号引用验证:基于方法区的存储结构验证

准备
在方法区中分配类变量所使用的的内存空间:为类变量分配内存,并将其初始化为默认值

解析
将类型中的符号引用转换为直接引用

初始化
初始化操作是执行类构造器方法的过程。方法是由编译器自动收集类中的类变量的赋值操作和静态语句块中的语句合并而成的

类加载器

系统自带的类加载有3种:
启动类加载器(Bootsrap ClassLoader):负责加载虚拟接的核心类库
扩展类加载器(Extension ClassLoader):父类加载器为根类加载器
应用程序类加载器(Application ClassLoader):父类加载器为扩展类加载器

双亲委派机制
在某个类加载器接收到加载器的请求时,首先会将加载任务交给父类加载器,如果父类加载器可以完成类加载任务,则成功返回,只有父类加载器无法成功时,才会自己去加载.

使用双亲委派模型的优点在于Java类 随着它的类加载器一起具备了一种带优先级的层级关系

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值