四十一、一张图详解jvm内存中类加载机制

#                           一张图详解jvm内存中类加载机制


###一、类加载过程     类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。它们开始的顺序如下图所示: ![这里写图片描述](https://img-blog.csdn.net/20180809093827343?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25ld2JpZV85MDc0ODY4NTI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

###二、过程解析
####1、加载:

  • 通过类的全限定名获取这个类的二进制字节流。
  • 将这个字节流所代表的静态存储结构转换为方法区运行时结构。
  • 在内存里面生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据访问入口。

####2、验证

  • 为了确保class文件的字节流信息符合当前虚拟机的要求进行验证。
  • 文件格式验证:验证字节流是否符合class文件格式规范。
  • 元数据验证:对字节码描述的信息进行语义分析。
  • 字节码验证:通过数据流、控制流分析,确定程序的语义、语法是符合逻辑的。
  • 符号引用验证:发在虚拟机将符号引用转化为直接引用的时候。

####3、准备

  • 准备阶段是正式为类变量分配内存并设置变量初始值的阶段,主要针对静态变量。

####4、解析

  • 虚拟机将常量池内的符号引用并替换为直接引用的过程。

####5、初始化

  • 类初始化阶段是类加载过程中的最后一步,在准备阶段,变量已经赋值过一次系统要求的初始值,而在初始化阶段,根据程序员通过程序制定的主观计划去初始化类变量及其他资源。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值