JAVA-大白话探索JVM-类加载过程(二) - Go语言中文社区

JAVA-大白话探索JVM-类加载过程(二)


640?wx_fmt=jpeg

首先我们知道JVM是什么以及类加载器的作用

不清楚的可以看看JAVA-大白话探索JVM-类加载器(一)

现在我们来摸索下类的加载过程

640?wx_fmt=jpeg

  1. 装载

  2. 链接

  3. 初始化

其中 链接 分为三步骤

640?wx_fmt=png

1.装载

  • 通过一个类的全限定名获取其定义的二进制字节流

  • 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构

  • 在堆中生成一个代表这个类的java.lang.Class对象,作为对方法区中这些数据的访问入口

2.链接

  1. 验证

  • 确保Class文件的字节流信息符合JVM的要求

  • 4个阶段校验(文件格式校验、元数据校验、字节码校验、符号引用校验)

  • 验证阶段是非常重要的,但不是必须的,它对程序运行期没有影响,如果所引用的类经过反复验证,那么可以考虑采用-Xverifynone参数来关闭大部分的类验证措施,以缩短虚拟机类加载的时间。

准备

  • 为类的静态变量(static)分配内存,并将其初始化为默认值

解析

  • 把类中的符号引用转换为直接引用

  • 符号引用就是一组符号来描述目标,可以是任何字面量。

  • 直接引用就是直接指向目标的指针、相对偏移量或一个间接定位到目标的句柄。

3.初始化

对类的静态变量,静态代码块执行初始化操作

640?wx_fmt=jpeg

640?wx_fmt=png

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq729533020/article/details/99739508
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-08 17:21:36
  • 阅读 ( 1338 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢