1、加载
加载的过程本质上是一个读取二进制数据的过程。可以是文件,网络数据,内存中的数据等,这一阶段是可以自定义的。加载过程中会在堆中初始化一个 class 对象。
2、验证
验证就是验证这堆二进制数据是不是有效的,就是这个 class 数据是否可以载入虚拟机。例如验证文件是否是 0xCAFEBAB 开头,再验证版本号是否被当前 JVM 支持,然后再校验内部的变量等等是否符合规范。
3、准备
准备阶段会在内存中开辟出空供静态变量使用。
4、解析
解析过程就是读取 class 文件的内容然后解析出里面的变量值的等。
5、初始化
解析出来的变量值赋值放到在准备阶段开辟的内存空间中。
6、使用
在堆中寻找到 class ,找到构造方法,执行构造方法便完成一个对象的使用。
7、卸载
卸载一个类不怎么常见,用途的话一般是服务器动态部署等,例如 Tomcat 解除部署一个网站,这时候就要从内存中卸载关联的类,卸载的过程一般包括清除 class 对象,清除静态变量等。
3194

被折叠的 条评论
为什么被折叠?



