类加载过程

加载模块
1.通过完全限定类获取定义该类的二进制字节流;
2.将该字节流表示的静态存储结构转换为方法区的运行时数据;
3.生成一个java。lang.Class对象,它表示类,并充当类在方法区域中的各种数据的访问点
链接到模块
验证
1.确保类文件中的字节流满足当前VM的要求,确保加载的类的正确性,并且不影响VM的安全性。
2.主要包括四种验证:文件格式验证、源数据验证、字节码验证、符号引用验证。
准备
1.为类变量分配内存,并将类变量的默认初始值设置为零。
不包括带有final的Static,因为final在编译时分配,并在准备过程中显式初始化。
类变量在方法区域中分配,而实例变量在Java堆中与对象一起分配。
解析
1.将常量池中的符号引用转换为直接引用的过程。
2.实际上,解析操作是在初始化后用JVM执行的
3.符号参照是描述被参照对象的一组符号。符号应用程序的文字形式在Java虚拟机规范的类文件格式中有明确定义。直接引用是直接指向目标的指针、相对偏移量或间接指向目标的句柄
4.解析操作主要针对类或接口、字段、类方法、接口方法和方法类型。常量池中的常量类信息、常量字段参考信息和常量方法参考信息。
初始化模块
1.Clinit()是类或接口初始化方法。请注意,它不是构造函数init()。
2.这个方法不需要定义,它是静态代码块中的语句和Java编译器为类中的所有类变量自动收集的赋值操作的组合。
3.我们注意到,如果没有静态变量C,字节码文件中就不会有Clinit方法
构造函数方法Clinit()中的指令按照语句在源文件中出现的顺序执行
虚拟机必须确保一个类的Clinit()方法在多个线程中同步锁定,这意味着一个类在其内部信息存储到方法区域之前只需要Clinit一次。

拉勾Java工程师P7训练营 高薪笔记相关推荐

  1. Python学习笔记——流程控制(拉勾教育数据分析实战训练营学习笔记)

    流程控制 1 程序结构 顺序结构 ​ 按编写顺序依次执行 选择结构 ​ 根据条件选择的结果,选择执行不同的语句 循环结构 ​ 在一定条件下,反复执行某段程序 2 选择语句 2.1 if语句 语法规则 ...

  2. 拉勾启源老师mysql讲义,【拉勾教育数据分析实战训练营】--Tableau学习笔记-重点回顾1...

    [拉勾教育数据分析实战训练营]--Tableau学习笔记-重点回顾1 [拉勾教育数据分析实战训练营]--Tableau学习笔记-重点回顾1 以下是我搜罗的一些官方优秀case分享: 1.https:/ ...

  3. 11.1 常用的包(熟悉) | 拉勾Java就业急训营

    学习资源来源:拉勾教育_Java就业急训营 11.1 常用的包(熟悉) 11.1.1 包的名称和功能 java.lang包--该包是Java语言的核心包,并且该包中的所有内容由Java虚拟机自动导入. ...

  4. 《拉勾Java高薪课程》阶段一输出 之 通过房屋租赁流程理解设计模式(单例模式,代理模式,工厂模式)--菜鸟小回

    通过房屋租赁流程理解设计模式(单例模式,代理模式,工厂模式) 文章目录 通过房屋租赁流程理解设计模式(单例模式,代理模式,工厂模式) @[toc] 一.单例模式 1. 相关概念 2. 演示思路 3. ...

  5. 拉勾教育《产品经理高薪训练营》课程思维导图

  6. Matlab运算于内部函数,java工程师面试突击第三季笔记

    在MATLAB中,字符串是用单撇号括起来的字符序列.MATLAB将字符串当作一个行向量,每个元素对应一个字符,其标识方法和数值向量相同.也可以建立多行字符串矩阵.在MATLAB中,字符串是用单引号括起 ...

  7. 拉勾产品经理实战训练营

    全方位认识产品经理,做好自我定位 产品从无到有概况,掌握产品全部流程 掌握用户需求分析,让产品有源可溯 敏捷方法与用户故事,线框图 TO B产品设计的系统设计思路 . . .

  8. 拉勾教育第五期学习笔记

    CSS核心样式.HTML5 + CSS3新特性 css常用样式-font-weight 粗细font-weight 作用:设置文字是否加粗显示: 属性名:font-weight,属于font属性的一个 ...

  9. 拉勾就业急训营java学习笔记说明

    谈谈在拉勾java学习的初始感受 首先说说关于拉勾课程 在决定学习java技术栈的时候,个人也零零碎碎的看了很多资料,但是一直有一个问题困扰着我,java生态包含了各种各样的模块,我该从哪些模块学起? ...

最新文章

  1. access mysql字段对应_ACCESS数据库中表与字段名称修改
  2. 学python需要什么基础知识-学Python需要什么基础知识?零基础可以学Python吗?
  3. vb.net2019- 目录
  4. thinkPHP增删改查的方法案例
  5. mysql堵塞等级_MySQL 事务隔离级别
  6. (15)FPGA面试题存储器资源区别
  7. 7. where loop
  8. C++--第0课 - 学习C++的意义
  9. 面向对象程序设计——基于JML的地铁系统
  10. 医学自然语言处理(NLP)相关论文汇总之 NAACL 2022
  11. 深度学习英语-迭代法(01)故事法,一个新的尝试
  12. 让孩子喜欢科学的31部少儿科普书籍
  13. 【九九乘法表】javascript做九九乘法表
  14. 【git】Git版本控制
  15. 【统计建模与R软件】第二章 R软件的使用 课本课后习题 答案 解析 代码
  16. 五镜头倾斜摄影相机和大疆M200完美配合,让公园规划和验收更便捷
  17. 购买mysql服务器时需要考虑的问题
  18. 广州车展5款车型自动驾驶配置盘点
  19. Python challenge 全部题解
  20. 平显火控设备自动测试系统的设计

热门文章

  1. Android开发概述
  2. 电子称DIY(贴应变片+写代码)
  3. 什么是中华田园敏捷开发?
  4. 动态虚拟服务器,AMD展示三代Opteron间虚拟服务器动态迁移
  5. jam stack_纯JAM堆栈
  6. 使用do…while循环语句计算正数5的阶乘
  7. MYSQL ifnull 函数 、if判断 、case when、 locate函数
  8. oh god job
  9. poi-tl生成word文档,java生成word文档
  10. PCI总线协议(一)