JVM学习第一天-类加载器解析与阶段分解
类加载
在Java代码中,类型的加载,连接与初始化过程都是在程序运行期间完成的。
-
类型理解成Class。;
-
类型绝大多数情况时编写好的如object类等。
-
类型可以在动态生成出来如动态代理等。
-
程序运行期间完成换句话来说是Runtiem(运行时语言)概念。
-
类型的加载最常见的一种情况是将存在的Class文件从磁盘上、硬盘上面给加载到内存里面。
-
类型的链接将类与类之间的关系确定好,对于字节码处理以及验证也是在加载连接完成的,字节码可以用16进制工具可以人为修改。
-
类型的初始化对于类型里面静态的变量进行初始化赋值。
-
类型的整个处理最终产物和功能和规范要求一直就可以。
提供了更大的灵活性,增加了更多的可能性。
类加载器深入剖析
java里面每一个类型最终数据结构会被纳入到JVM管理的内存当中,由类加载器做到。
- Java虚拟机与程序的生命周期。
- java虚拟机是一个进程
- 在如下几种情况下,Java虚拟机将结束生命周期
- 执行了System.exit()方法
- 程序正常执行结束
- 程序在执行过程中遇到了异常或错误而异常终止
- 由于操作系统出现错误而导致Java虚拟机进程终止
类加载器并不需要等到某个类被“首次主动使用”时再加载它
类的加载、连接、初始化
- 加载:查找并加载类的二进制数据
- 连接
- 验证:确保被加载的类的正确性
- 准备:为类的静态变量分配内存,并将其初始化默认值
- 解析:把类中的符号引用转换为直接引用
- 初始化:为类的静态变量赋予正确的初始值