下文笔者讲述java中类加载的简介说明,如下所示:
类加载的流程: jvm虚拟机会将字节码文件(.class)加载到内存 并对数据进行校验、转换解析和初始化 最终形成可以被虚拟机直接使用的java类型 类加载和连接的过程都是在运行期间完成的
类的加载方式
- 本地编译好的class中直接加载
- 网络加载:java.net.URLClassLoader可以加载url指定的类
- 从jar、zip等等压缩文件加载类,自动解析jar文件找到class文件去加载util类
- 从java源代码文件动态编译成为class文件
类加载的过程
类加载的生命周期:加载(Loading)–>验证(Verification)–>准备(Preparation)–>解析(Resolution)–>初始化(Initialization)–>使用(Using)–>卸载(Unloading) 加载加载阶段的工作
- 使用一个类的全限定名来获取定义此类的二进制字节流
- 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构
- 在java堆中生成一个代表这个类的java.lang.Class对象,做为方法区这些数据的访问入口
- 加载阶段完成之后二进制字节流就按照虚拟机所需的格式存储在方区去中
验证
这一阶段的目的是为了确保Class文件的字节流中包含的信息符合当前虚拟机的要求。准备
准备阶段是正式为变量分配内存并设置初始值,这些内存都将在方法区中进行分配,这里的变量仅包括类标量不包括实例变量。解析
解析是虚拟机将常量池的符号引用替换为直接引用的过程。初始化
初始化阶段是执行类构造器()方法的过程版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。