栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

类加载的五个阶段

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

类加载的五个阶段

一、加载阶段

JVM在该阶段的主要目的是将字节码从不同的数据源(可能是class文件,也可能是jar包,甚至网络)转化为二进制字节流加载到内存中,并生成一个代表该类的 java.lang.Class 对象

二、连接阶段–验证
  1. 目的是为了确保Class文件的字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机自身的安全
  2. 包括:文件格式验证(是否以魔数 oxcafebabe 开头)、元数据验证、字节码验证和符号引用验证
  3. 可以考虑使用 -Xverify:none 参数来关闭大部分的类验证措施
三、连接阶段–准备

JVM 会在该阶段对静态变量分配内存并默认初始化(对应数据类型的默认初始值,如0,0L,null,false等),这些变量所使用的内存都将在方法区中进行分配

四、连接阶段–解析

虚拟机将常量池内的符号引用替换为直接引用的过程

五、初始化 Initialization
  1. 到初始化阶段,才真正开始执行类中定义的java程序代码,此阶段是执行()方法的过程
  2. ()方法是由编译器按语句在源文件出现的顺序,依次自动收集类中的所有静态变量的赋值动作和静态代码块中的语句,并进行合并
  3. 虚拟机会保证一个类的()方法在多线程环境中被正确的加锁、同步,如果多个线程同时去初始化一个类,那么只会有一个线程去执行这个类的()方法,其他线程都需要阻塞等待,直到活动线程执行()方法完毕


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/295646.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号