当前位置: 首页 > wzjs >正文

网站备案信息填写高端网站模板

网站备案信息填写,高端网站模板,上海知名网站建设,辅助网站怎么做的1. JVM类装载类装载(Class Loading)是Java虚拟机(JVM)将类的字节码文件(.class文件)加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被JVM直接使用的Java类型的过程。这…

1. JVM类装载

类装载(Class Loading)是Java虚拟机(JVM)将类的字节码文件(.class文件)加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被JVM直接使用的Java类型的过程。

这是Java程序运行的基础机制,也是实现Java"一次编写,到处运行"特性的关键环节。

类装载的核心目标是:

  1. 将类的二进制数据读入内存

  2. 将静态存储结构转换为运行时数据结构

  3. 生成对应的Class对象作为访问入口

  4. 确保加载的类安全有效


2. 类装载的生命周期 

类从加载到虚拟机中开始,直到卸载为止,它的整个生命周期包括了:加载、验证、准备、解析、初始化、使用和卸载这7个阶段。

其中,验证、准备和解析这三个部分统称为连接(linking) 

 

1. 加载(Loading)

  • 任务:查找并加载类的二进制数据

  • 过程

    • 通过类的全限定名获取类的二进制字节流

    • 将字节流代表的静态存储结构转换为方法区的运行时数据结构

    • 在堆中生成一个代表该类的Class对象,作为方法区数据的访问入口

  • 特点

    • 数组类由JVM直接创建,不通过类加载器

    • 非数组类的加载可以通过内置或自定义的类加载器完成

 

2. 验证(Verification)

  • 目的:确保Class文件的字节流符合JVM规范,不会危害虚拟机安全

  • 验证内容

    • 文件格式验证(魔数、版本号等)

    • 元数据验证(语义分析)

    • 字节码验证(程序逻辑验证)

    • 符号引用验证(常量池中的引用检查)

3. 准备(Preparation)

  • 任务:为类变量分配内存并设置初始值

  • 特点

    • 只分配类变量(static变量),不包括实例变量

    • 初始值通常是数据类型的零值(如0、0L、null、false等)

    • 对final static常量会直接赋程序指定的值

4. 解析(Resolution)

  • 任务:将常量池中的符号引用替换为直接引用

  • 解析类型

    • 类或接口的解析

    • 字段解析

    • 方法解析

    • 接口方法解析

  • 特点

    • 解析可能在初始化之后才进行(动态绑定)

    • 如果解析失败会抛出NoSuchMethodError等错误

5. 初始化(Initialization)

  • 任务:执行类构造器<clinit>()方法

  • 过程

    • 按顺序执行静态变量赋值和静态代码块

    • 保证父类的<clinit>()先于子类执行

    • 接口的<clinit>()不需要先执行父接口的

  • 触发条件(以下情况必须立即初始化):

    1. 使用new、getstatic、putstatic或invokestatic指令时

    2. 反射调用类时

    3. 初始化子类发现父类未初始化时

    4. 虚拟机启动时指定的主类

    5. 使用动态语言支持时相关方法句柄对应的类未初始化

<clinit>()方法详解

<clinit>()是Java编译器自动生成的类构造器方法(Class Constructor Method),它负责执行类的初始化工作。这个特殊的方法名称中的"clinit"是"class initialization"的缩写。

  1. 自动生成

    • 由编译器自动收集类中的所有静态变量赋值语句静态代码块(static{}块)合并产生

    • 如果没有静态变量赋值或静态代码块,编译器不会生成<clinit>()方法

  2. 执行顺序

    • 父类的<clinit>()先于子类执行

    • 静态变量和静态代码块按源代码中的出现顺序执行

    • 接口的<clinit>()不需要先执行父接口的(除非使用父接口的变量)

  3. 线程安全

    • JVM会保证一个类的<clinit>()方法在多线程环境下被正确地加锁同步

    • 如果一个线程正在执行<clinit>(),其他线程会阻塞等待

6. 使用(Using)

  • 类完成初始化后进入使用阶段

  • 可以创建实例、调用方法、访问字段等

7. 卸载(Unloading)

  • 条件

    • 类的所有实例都已被回收

    • 加载该类的ClassLoader已被回收

    • 对应的Class对象没有被引用

  • 特点

    • 由JVM的垃圾回收器完成

    • 卸载通常发生在方法区(元空间)垃圾回收时

    • 由启动类加载器加载的类通常不会被卸载


3. 总结

类装载的执行过程?

  • 加载:查找和导入class文件
  • 验证:保证加载类的准确性
  • 准备:为类变量分配内存并设置类变量初始值
  • 解析:把类中的符号引用转换为直接引用
  • 初始化:对类的静态变量,静态代码块执行初始化操作
  • 使用:JVM 开始从入口方法开始执行用户的程序代码
  • 卸载:当用户程序代码执行完毕后,JM便开始销毁创建的Class对象。

上一篇   下一篇


文章转载自:

http://oc3fLU7x.prxqd.cn
http://Pn7quz1v.prxqd.cn
http://dIAe1ZYD.prxqd.cn
http://Ac9GkKpz.prxqd.cn
http://sBRIaRH0.prxqd.cn
http://udcBISLT.prxqd.cn
http://pLrxIfKt.prxqd.cn
http://LeCwCSpa.prxqd.cn
http://GvGovIoO.prxqd.cn
http://KvhmjAKW.prxqd.cn
http://aQjaxVXC.prxqd.cn
http://1EFm0GCF.prxqd.cn
http://WsiJ5qxy.prxqd.cn
http://QmSwztHT.prxqd.cn
http://bE74H0ZK.prxqd.cn
http://BUNiLkjm.prxqd.cn
http://nYTd2yqa.prxqd.cn
http://6DB1oTL1.prxqd.cn
http://ntr68E2M.prxqd.cn
http://QAeysu0U.prxqd.cn
http://z85vFC71.prxqd.cn
http://Ofm3edy3.prxqd.cn
http://RHOGFVtN.prxqd.cn
http://pcS9LmtV.prxqd.cn
http://HWj03qa3.prxqd.cn
http://Bn0oDtop.prxqd.cn
http://1zvKZfM8.prxqd.cn
http://q9qqkHvX.prxqd.cn
http://eQAAKLdg.prxqd.cn
http://WtWcUNAu.prxqd.cn
http://www.dtcms.com/wzjs/653019.html

相关文章:

  • 三亚网站定制开发公司郑州网站制作_郑州网页制作_做网站设计_河南网站制作网
  • 麻涌企业网站建设潍坊 开发区网站建设
  • 网站建设费用摊销会计分录什么是网络营销常用的网络营销方法有哪些
  • 网站建设网站设计哪家专业有趣的网络营销案例
  • 久产久人力有限公司九江市seo
  • 南京企业网站排名优化广东企业微信网站建设
  • 网站模板站扩容跨境一件代发平台
  • 郑州网站建设大华伟业wordpress 淘宝客源码
  • 网站防止恶意注册软件工程专业就业方向
  • 嘉兴网站建设品牌升级店铺网站域名怎么做
  • 教学平台网站建设合同网站脚本错误
  • 网站顶部伸缩广告中国服务外包公司排名
  • 大众点评如何做团购网站番禺制作网站设计
  • 厦门自主建站模板广州网站备案要审核多久
  • 十堰市住房和城乡建设厅官方网站吸引人的推广标题
  • 网站规划与设计一千字组织建设内容
  • 免费网站代码东莞市企业网站建设哪家好
  • 邓州市网站建设泰州网站开发公司
  • 提供深圳网站制作公司广东省住房和城乡建设厅官网查证
  • 哪家企业做网站好做网站需要哪些基本功能
  • 建设厅网站首页重庆承越网站建设地址
  • 自己做的网站网页错位wordpress文章页模板
  • 配件查询网站制作dz论坛网站建设
  • 网站html地图制作顺义青岛网站建设
  • 蛋糕店网站开发策划书站长工具的网址
  • 网站建设教程自学网百度首页关键词优化
  • 哪个做网站的公司好title 门户网站建设招标书
  • 中国建设银行山西省分行网站WordPress整站下载器
  • 如何给网站引流wordpress阅读数总是0
  • 厦门广告公司网站建设东莞专业做网站优化