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

服务器放网站吗高端保姆

服务器放网站吗,高端保姆,红酒网站建设,律师网站建设推广🔹 JVM 类加载的五个阶段(常说三个:加载、链接、初始化)严格来说有 五个阶段,其中 链接 又分为三个子阶段:1.加载(Loading)通过类的全限定名(package className&#xf…

🔹 JVM 类加载的五个阶段(常说三个:加载、链接、初始化)

严格来说有 五个阶段,其中 链接 又分为三个子阶段:

1.加载(Loading)

  • 通过类的全限定名(package + className),由类加载器(ClassLoader)查找并加载类的字节码文件(.class)。

  • 常见的类加载器:

    • Bootstrap ClassLoader(启动类加载器):加载 JDK 核心类库 rt.jarjava.base 等。

    • Extension ClassLoader(扩展类加载器):加载 jre/lib/extjava.ext.dirs 目录下的类。

    • Application ClassLoader(应用类加载器):加载 classpath 下的类。

    • 用户自定义 ClassLoader。

  • 最终将 .class 字节流读入内存,在方法区生成对应的 运行时类结构(Class 对象),并在堆中创建 java.lang.Class 实例。


2. 链接(Linking)
链接 = 验证 + 准备 + 解析

  1. 验证(Verification)
    • 确保字节码文件的正确性与安全性,避免非法操作。

    • 例如:栈数据不会溢出、方法调用合法、类型转换安全。

    • 验证不通过会抛出 VerifyError

  2. 准备(Preparation)
    • 为类的 静态变量(static field) 分配内存,并赋予 默认值(而不是赋程序员写的值)。

    • 例如:

      public static int a = 10;
      

      准备阶段a 的值是 0(默认 int 值),赋值为 10 会在 初始化阶段执行。

  3. 解析(Resolution)
    • 将常量池中的符号引用(Symbolic Reference,例如 "java/lang/String")转换为 直接引用(Direct Reference,例如内存地址指针、方法表索引)。


3. 初始化(Initialization)

  • 执行类构造器 <clinit>() 方法(由编译器自动收集所有 static {} 块和静态变量赋值语句组成)。

  • JVM 保证 类初始化是线程安全的,即同一个类的 <clinit>() 方法在多线程下只会被执行一次。

  • 触发类初始化的时机:

    • 使用 new 实例化对象

    • 调用类的静态方法

    • 访问类的静态变量(非 final 常量)

    • 反射 Class.forName()

    • JVM 启动时加载主类(含 main 方法的类)


4. 使用(Using)

  • 类被加载到内存并初始化后,可以被正常使用。

  • 例如:创建对象、调用方法、访问字段。


5. 卸载(Unloading)

  • 类的生命周期结束后,卸载出 JVM。

  • 卸载条件:

    • 该类的所有对象实例都已被回收。

    • 该类的 ClassLoader 已被回收。

    • 对应的 java.lang.Class 对象不再被引用。

  • 一般只在 自定义类加载器 + 动态加载/卸载类(如 Tomcat 热部署、OSGi 框架) 时常见。


🔹 类加载的双亲委派机制

  • 当一个类加载器收到类加载请求时,不会自己去加载,而是先委托给父类加载器。

  • 如果父类加载器无法完成(找不到该类),才由子类加载器尝试加载。

  • 优点:

    • 避免重复加载类。

    • 保证核心类库的安全(用户自定义的 java.lang.String 不会覆盖 JDK 自带的 String)。


🔹 总结(流程图式)

类加载过程:加载 → 链接(验证 → 准备 → 解析) → 初始化 → 使用 → 卸载
http://www.dtcms.com/a/474239.html

相关文章:

  • H7-TOOL RTOS Trace功能的RTX5检测增加最大任务栈使用情况检测,不需要目标板额外做任何代码实时监测
  • android usb摄像头无法缩放问题
  • 高安版_中兴B860AV3.2M_晶晨S905L3B_安卓9_兼容uwe5621ds无线-线刷固件包
  • 北京手机网站开发费用用系统建购物网站
  • linux中tee解析
  • 媒体的分类层次
  • Get请求和Post请求区别
  • 搭建网站商城医院网站推广渠道
  • 从零复现论文(2)——:基于启发式优化的无线传感器网络WSN功率分配策略
  • 【Swift】LeetCode 283. 移动零
  • 【Java数据结构】冒泡排序编码关键细节与避坑指南
  • DPDK中的BitMap测试
  • 网站制作合作2023企业税收标准
  • Windchill中afterVK的写法示例
  • 《红色脉络:一部PLMN在中国的演进史诗 (1G-6G)》 第12篇 | 接入网重构:从eNodeB到gNodeB——C-RAN与“下沉”
  • so域名的网站有哪些wordpress主题恢复出厂设置
  • Maven中的settings.xml文件配置详解
  • 南昌制作企业网站湘潭网站建设 安全还踏实磐石网络
  • 我设计的数字编码
  • 从分片到可编程网卡——【网络编程】详解 IP 协议:报头字段、路由器功能、网段划分和分片传输
  • 南通网站建设排名公司哪家好北京网站建设公司电扬
  • BSW:辅助模块、校验与代码生成笔记
  • seo网站营销推广wordpress更新版本
  • 李宏毅机器学习笔记20
  • 无锡信息网站建设最近热点新闻素材
  • 开发中遇到的关于Spring事务[传播行为和隔离级别]的相关问题的记录
  • CVE-2019-2729反序列化(unserialize)漏洞学习与分析
  • 一流的句容网站建设自己做的网站找不到了
  • TDengine 数学函数 CEIL 用户手册
  • 石家庄好用的招聘网站做网站网站会被判多久