李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
Java
正文
JVM学习一 -- 浅谈类的加载过程
Leefs
2019-10-16 PM
1477℃
0条
#浅谈类的加载过程 ### 一、类的加载 类的加载指的是将类的**.class文件**中的二进制数据读入到**内存**中,将其放在运行时数据区的方法区内,然后在内存中创建一个java.lang.Class对象(规范并未说明Class对象位于哪里,HotSpot虚拟机将其放在了方法区中)用来封装类在方法区内的数据结构。 ### 二、类加载的方式 **加载.class文件的方式:** 1. 1.从本地系统中直接加载 2. 2.通过网络下载.class文件 3. 3.从zip,jar等归档文件中加载.class文件 4. 4.从专有数据库中提取.class文件 5. 5.将Java源文件动态编译为.class文件 ### 三、类的加载、连接与初始化 + 1.**加载**:查找并加载类的二进制数据(将类的class文件加载到内存当中) + 2.**连接** + **验证:**确保被加载的类的正确性(确保加载的字节码文件符合JVM对字节码格式的要求) + **准备:**为类的**静态变量**(全局的方法通过类名可以直接进行调用,不需要通过引用进行调用)分配内存,并将其初始化为**默认值** ```java class Test{ public static int a = 1; } ``` 加载过程:将Test类加载到内存当中,在连接的准备阶段时为a分配一个内存,然后将a初始化为一个默认值(将a设为0). + **解析:**把类中的**符号引用**(通过符号的方法进行表示,间接引用)转换为**直接引用**(直接将该方法通过指针的方式去指向了我们所用到的目标对象的内存的位置,这样可以直接定位到该方法) + 3.**初始化**:为类的静态变量赋予正确的初始值 ### 四、类的加载过程图解 ![JVM类的加载过程3.png][1] [1]: https://lilinchao.com/usr/uploads/2019/10/449592613.png
标签:
Java
,
JVM
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://www.lilinchao.com/archives/20.html
上一篇
用继承进行设计
下一篇
JVM学习二 -- Java程序对类的使用方式
取消回复
评论啦~
提交评论
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
标签云
MyBatis-Plus
Beego
Jquery
Sentinel
随笔
ClickHouse
Kafka
Spark Streaming
序列化和反序列化
Java编程思想
Azkaban
DataX
Filter
JVM
Docker
Tomcat
人工智能
Spark Core
Livy
SQL练习题
DataWarehouse
二叉树
Http
算法
VUE
Typora
LeetCode刷题
MySQL
设计模式
数据结构和算法
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞