Java虚拟机架构
Java虚拟机架构 类加载器子系统 加载 链接 初始化 运行时数据区(Runtime Data Area) 方法区(Method Area) 堆区(Heap Area) 栈区(Stack Area) PC寄存器 本地方法栈 执行引擎 解释器 编译器 垃圾回收器 JVM被分为三个主要的子系统: 类加载器子系统 、 运行时数据区 、 执行引擎 类加载器子系统 Java的动态类加载功能是由类加载器子系统处理。当它在运行时(不是编译时)首次引用一个类时,它加载、链接并初始化该类文件。 加载 类由此组件加载。启动类加载器 (BootStrap class Loader)、扩展类加载器(Extension class Loader)和应用程序类加载器(Application class Loader) 这三种类加载器帮助完成类的加载。 启动类加载器 – 负责从启动类路径中加载类,无非就是rt.jar。这个加载器会被赋予最高优先级 扩展类加载器 – 负责加载ext 目录(jre\lib)内的类 应用程序类加载器 – 负责加载应用程序级别类路径,涉及到路径的环境变量等 上述的类加载器会遵循委托层次算法(Delegation Hierarchy Algorithm)加载类文件。 链接 校验 – 字节码校验器会校验生成的字节码是否正确,如果校验失败,会得到校验错误 准备 –