JVM类加载机制简述

1.类的生命周期:

* 加载、验证、准备、解析、初始化、使用、卸载
* 验证、准备、解析 并称为连接
* 顺序固定的阶段:加载、验证、准备、初始化、卸载,解析阶段可以在某些情况下在初始化阶段之后再开始。

2.加载

  * 获取此类的二进制流
  * 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构
  * 在内存中生成代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口

3.验证

  * 文件格式验证
  * 元数据验证
  * 字节码验证
  * 符号引用验证

4.准备

  * 给类变量(static修饰的变量)分配内存并设置类变量的初始值
  * 常量直接赋值

5.解析

  * 将常量池中的符号引用替换为直接引用

6.初始化

  * 执行类构造器<clinit>()方法的过程,包括给类变量赋值;执行父类<clinit>()方法;多线程环境保证只有一个线程去执行类的初始化操作。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,确实编译语言发展的一大步。 虚拟机把描述类的数据从...
    胡二囧阅读 1,076评论 0 0
  • 虚拟机把描述类的数据从Class文件加载到内存, 并对数据进行校验、转换解析和初始化, 最终形成可以被虚拟机直接使...
    好好学习Sun阅读 1,390评论 0 3
  • 编译原理请查看之前内容,.java文件编译过程和执行过程分析以及计算机简单认识 需要了解更多Java原创资料,请加...
    坑王老薛阅读 2,418评论 0 5
  • 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的...
    丑人林宗己阅读 669评论 0 2
  • Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个...
    今早上阅读 597评论 0 0

友情链接更多精彩内容