深入理解JVM——类加载机制

来源:互联网 发布:域名注册排行榜 编辑:程序博客网 时间:2024/05/18 15:29

类加载机制

虚拟机把class信息加载进内存,并进行校验,解析,和初始化,最终形成虚拟机可直接使用的java文件,这就是类的初始化。

class信息 可以是本地编译生成的class文件,也可以是网络io,zip包,或者数据库以及其他文件中获取,只要能被JVM验证解析通过即可。

类的生命周期

类从加载到被卸载的生命周期可用如图表示:

类的生命周期

其中类加载包括:加载 -> 验证 -> 准备 -> 解析 -> 初始化 这五个阶段。这五个阶段中,加载,验证,准备,初始化 这四个阶段是顺序开始的,而解析则不一定,它可以在初始化之后开始,这是为了支持java语言的动态绑定。

注: 注意这里是顺序开始,而不是顺序执行。二者概念完全不同。

动态绑定与静态绑定的概念

绑定指的是把一个方法的调用与方法的类(方法主体)关联起来。

静态绑定 : 在程序执行前方法已经被绑定,由编译期或其他连接程序实现。对于java而言,可以理解为编译期的绑定,一般只有 final, static,private和构造方法为前期绑定。

动态绑定 : 运行期根据具体对象的类型进行绑定,几乎所有的方法都是动态绑定。

接下来就五个过程做具体解析:

1. 加载

加载过程中,虚拟机一般完成一下几件事情:
- 根据类的权限定名获取到该类的二进制字节流
- 将二进制字节流代表的数据存储结果转换为方法区中的可运行存储结构
- 在堆中创建代表这个类的java.long.Object实例对象,作为类的访问入口。

2. 验证

3. 准备

4. 解析

5. 初始化

原创粉丝点击