JVM类加载过程

类加载机制:

虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被Java虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。

类加载的生命周期:       

1.加载:通过一个类的全名来获取定义此类的二进制字节流,并将这些静态数据转换成方法区中的运行时数据结构,在堆中生成一个代表这个类的java.lang.Class对象,作为方法区类数据的访问入口,这个过程需要类加载器参与。

2.验证:验证二进制字节流是否 符合虚拟机约束,并且能被当前虚拟机处理(虚拟机是向下兼容的,也就是1.7编译的class能被1.8的虚拟机处理,以此类推)。

3.准备:正式为类变量分配内存并为类变量设置初始值(方法区进行)。

4.解析:将常量池中的符号引用替换成直接引用。

5.初始化:执行类构造器<clinit>()方法的过程。

其中验证、准备、解析可以称为链接阶段。

补充:

       二进制字节流获取方式:

        1.从zip中读取,jar、war、ear
        2.从网络中获取,applet
        3.运行时计算机生成,动态代理。
        4.有其他文件生成,jsp
        5.从数据中读取,中间件服务器SAP NetWeaver

        类构造器<clinit>:

由编译器自动收集类中的所有类变量的赋值动作和静态代码块中的语句合并产生的,编译器收集的顺序是由语句在源文件的顺序决定的。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值