JAVA——JVM

发布于 2022年 05月 04日 05:32

mp.weixin.qq.com/s/Bdwn_mrwI…

类加载过程

系统加载Class类型的文件主要三步:加载➡️连接➡️初始化。其中连接过程有可分为三步:验证➡️准备➡️解析。

加载

  • 通过全类名获取定义次类的二进制字节流
  • 将字节流所代表的静态存储结构转换为方法去的运行时数据结构
  • 在内存中生成一个代表该类的Class对象,作为方法区这些数据的访问入口

验证

准备

正式为类变量分配分配内存并设置类变量初始值的阶段

解析

虚拟机将常量池内的符号引用替换为直接引用的过程,也就是得到类或者字段、方法在内存中的指针或者偏移量。

初始化

真正执行类中定义的java程序代码,初始化是执行类构造器 ()方法的过程。

类加载器

JVM 中内置了三个重要的 ClassLoader,除了 BootstrapClassLoader 其他类加载器均由 Java 实现且全部继承自java.lang.ClassLoader:

  • BootstrapClassLoader(启动类加载器) :最顶层的加载类,由C++实现,负责加载 %JAVA_HOME%/lib目录下的jar包和类或者或被 -Xbootclasspath参数指定的路径中的所有类。
  • ExtensionClassLoader(扩展类加载器) :主要负责加载目录 %JRE_HOME%/lib/ext 目录下的jar包和类,或被 java.ext.dirs 系统变量所指定的路径下的jar包。
  • AppClassLoader(应用程序类加载器) :面向我们用户的加载器,负责加载当前应用classpath下的所有jar包和类。

双亲委派模型

推荐文章