李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
Java
正文
JVM学习一 -- 浅谈类的加载过程
Leefs
2019-10-16 PM
2034℃
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://lilinchao.com/archives/20.html
上一篇
用继承进行设计
下一篇
JVM学习二 -- Java程序对类的使用方式
评论已关闭
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
NLP
4
标签云
Spring
二叉树
Golang基础
数学
Azkaban
Shiro
链表
机器学习
Java工具类
GET和POST
SpringBoot
Elastisearch
Quartz
Sentinel
栈
ClickHouse
Tomcat
Spark SQL
Map
HDFS
Flink
FastDFS
Http
Ubuntu
MySQL
Filter
Spark Core
Spark Streaming
JavaScript
Scala
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞
评论已关闭