JVM面试 类加载机制

JVM的类加载机制


一、JVM的运行机制

JVM 是用于运行Java字节码的虚拟机,包括一套字节码指令集,一组程序寄存器,一个虚拟机栈,一个虚拟机堆,一个方法区和一个垃圾回收器。JVM运行在操作系统之上,不与硬件设备直接交互;
Java程序具体运行过程:

  1. JAVA源文件被编译器编译成字节码文件
  2. JVM将字节码文件编译成相应操作系统的机器码
  3. 机器码调用相应操作系统的本地方法库执行相应的方法
    在这里插入图片描述

二、JVM的类加载机制

1.JVM的类加载阶段

  1. 加载
  2. 验证
  3. 准备
  4. 解析
  5. 初始化

在类初始化完成后就可以使用该类的信息,不用则从JVM卸载;

2.类加载器

JVM提供三种类加载器

  • 启动类加载器
  • 扩展类加载器
  • 应用程序类加载器
  • 除了上面三种,还可以继承java.lang.ClassLoader实现自己定义的类加载器

3. 双亲委派机制

简单说:儿子找爸爸,爸爸找爷爷
*所有的类都会委派到类加载器*

  1. 启动类加载器— %JAVA_HOME/lib路径下的jar包

  2. 扩展类加载器—%JAVA_HOMEjre/lib/ext路径下的jar包

  3. 应用程序类加载器—在CLASSPATH路径下指定

  4. 自定义的类加载器—加载用户自定义目录下的Class文件

双亲委派机制的核心就是保障类的唯一性和安全性(唯一:无论是那个类加载器加载类,最后都交给启动器类加载器加载;安全性:JVM不允许存在相同包名跟类名)


猜你喜欢

转载自blog.csdn.net/weixin_44313584/article/details/109340888