JavaDriver JavaDriver
首页
  • 基础
  • 并发
  • JVM
  • 设计模式
  • 计算机网络
  • 操作系统
  • 数据结构
  • 算法
  • MYSQL
  • REDIS
  • Netty
  • Kafka
系统设计
非技术
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

YoungAnn

西二旗Java老司机一枚 致力于社会主义添砖Java
首页
  • 基础
  • 并发
  • JVM
  • 设计模式
  • 计算机网络
  • 操作系统
  • 数据结构
  • 算法
  • MYSQL
  • REDIS
  • Netty
  • Kafka
系统设计
非技术
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 基础

    • Java 异常有哪些类型?
    • HashMap 与 ConcurrentHashMap 的实现原理是怎样的?
    • Java 中接口和抽象类的区别
    • 为什么重写 equals 必须重写 hashcode ?
    • == 和 equals() 的区别?
    • String,StringBuffer,StringBuilder 之间有什么区别?
    • 简述 ArrayList 与 LinkedList 的底层实现以及常见操作的时间复杂度
    • 简述 BIO, NIO, AIO 的区别
    • 在一个静态方法内调用一个非静态成员为什么是非法的?
    • 简述 Java 的反射机制及其应用场景
    • Java 类的加载流程是怎样的?
      • Java 类的加载流程是怎样的?
    • 什么是双亲委派机制?
    • Java 中 sleep() 与 wait() 的区别
    • 简述 Java 中 final 关键字的作用
    • String 类能不能被继承?为什么?
    • Java 缓冲流 buffer 的用途和原理是什么?
    • 简述动态代理与静态代理
    • 阻塞队列都有哪几种,有什么区别?
    • 简述 HashSet 实现原理
  • 并发

  • JVM

  • 设计模式

  • Java相关
  • 基础
YoungAnn
2022-04-04
目录

Java 类的加载流程是怎样的?

# Java 类的加载流程是怎样的?

类从被加载到JVM中开始,到卸载为止,整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。 其中类加载过程包括加载、验证、准备、解析和初始化五个阶段。

做什么
加载 类加载阶段就是由类加载器负责根据一个类的全限定名来读取此类的二进制字节流到JVM内部,并存储在运行时内存区的方法区,然后将其转换为一个与目标类型对应的java.lang.Class对象实例
验证 验证类数据信息是否符合JVM规范,是否是一个有效的字节码文件,验证内容涵盖了类数据信息的格式验证、语义分析、操作验证等
准备 为类中的所有静态变量分配内存空间,并为其设置一个初始值(由于还没有产生对象,实例变量不在此操作范围内)
被final修饰的静态变量,会直接赋予原值;类字段的字段属性表中存在ConstantValue属性,则在准备阶段,其值就是ConstantValue的值
解析 可以认为是一些静态绑定的会被解析,动态绑定则只会在运行是进行解析;静态绑定包括一些final方法(不可以重写),static方法(只会属于当前类),构造器(不会被重写)
初始化 初始化,为类的静态变量赋予正确的初始值,JVM负责对类进行初始化,主要对类变量进行初始化。
编辑 (opens new window)
上次更新: 2022/05/19, 21:26:01
简述 Java 的反射机制及其应用场景
什么是双亲委派机制?

← 简述 Java 的反射机制及其应用场景 什么是双亲委派机制?→

最近更新
01
电商-商品系统设计
12-17
02
关于如何写OKR
12-09
03
对事不对人 vs 对人不对事
12-09
更多文章>
Theme by Vdoing | Copyright © 2022-2023 YoungAnnn | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式