虚拟机类加载机制

2019-05-22  本文已影响0人  蜡笔没了小新_e8c0

概述

虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。

类加载的时机

类的生命周期

解析阶段不一定在初始化之前,可能在初始化阶段之后再开始,这是为了支持Java语言的运行时绑定。

类加载器

自定义类加载器 —> 应用程序类加载器(Application ClassLoader) —> 扩展类加载器(Extension ClassLoader) —> 启动类加载器(Bootstrap ClassLoader)

双亲委派模型的工作过程为:如果一个类加载器收到了类加载的请求,它首先不会自己尝试加载该类,而是把这个请求委派给父类加载器去完成,每个层次的类加载器哦都是如此,因此所有的加载请求最终都会被传送到启动类加载器中,只有当父类加载器反馈自己无法完成这个加载请求时,子加载器才会尝试自己去加载。

使用双亲委派模型可以保证一些相同名称的类在不同的类加载器环境中都是同一个类。

验证

准备

准备阶段是正式为类变量分配内存并设置类变量初始值的阶段,这些变量所使用的内存都将在方法区中进行分配。

解析

阶段是虚拟机将常量池内的符号引用替换为直接引用的过程。解析动作主要针对类或接口、字段、类方法、接口方法、方法类型、方法句柄和调用点限定符7类符号引用进行。

上一篇 下一篇

猜你喜欢

热点阅读