请选择 进入手机版 | 继续访问电脑版
设为首页 收藏本站
开启辅助访问 切换到宽版

新浪微博登陆

只需一步, 快速开始

QQ登录

只需一步,快速开始

切换风格 立即注册 找回密码

Java教程网

查看: 7246|回复: 30

JVM类加载机制

[复制链接]

新浪微博达人勋

844

积分

477

帖子

38

贡献

Rank: 4

积分
844

社区QQ达人

发表于 2019-7-16 09:35:59 | 显示全部楼层 |阅读模式
JVM类加载器
类加载器是用来加载 Java 类到 Java 虚拟机中的。Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,并转换成 java.lang.Class类的一个实例。每个这样的实例用来表示一个 Java 类。通过此实例的 newInstance()方法就可以创建出该类的一个对象
JVM类加载过程图解

1)装载:查找和导入Class文件
2)链接:执行校验,准备,解析步骤
a)校验:检查载入Class文件数据的正确性
b)准备:给类的静态变量分配存储空间
c)解析:将符号引用转换为直接引用
3)初始化:对类的静态变量,静态代码块执行初始化工作
类装载工作由ClassLoader及其子类负责,ClassLoader是一个重要的Java运行时系统组件。它负责在运行时查找和载入Class字节码文件。JVM运行时会产生3个ClassLoader;根转载器,ExtClassLoader(扩展类装载器)和AppClassLoader(应用类装载器)。根类装载器不是ClassLoader的子类,它适应C++语言编写,因而在java中看不到它,根装载器负责装载JRE的核心类库,如JRE目标下的rt.jar,charset.jar等。ExtClassLoader和AppClassLoader都是ClassLoader的子类,ExtClassLoader负责装载JRE扩展目录ext的JAR类包:AppClassLoader负责装载Classpath路径下的类包。
这3个类装载器之间存在父子层级关系,即根装载器是ExtClassLoader的父装载器,ExtClassLoader是AppClassLoader的父装载器,默认情况下,使用AppClassLoader装载应用程序类。

运行以上的程序可以知道,当前的ClassLoader是AppClassLoder,其父ClassLoader是ExtClassLoader,祖父ClassLoader是根类装载器。java无法获取它的句柄,所以返回是null
JVM装载器委托机制

JVM类装载时使用“全盘负责委托机制”,全盘负责是指当一个ClassLoader装载一个类时,除非显示地使用另一个ClassLoader,该类所依赖及引用的类也由这个ClassLoader载入;委托机制是指先委托父装载器寻找目标类,只有在找不到的情况下才从自己的类路径下查找并装载目标类。由于全盘负责委托机制可以避免安全隐患的发生。

来自群组: java开发组

新浪微博达人勋

6634

积分

1657

帖子

1659

贡献

Rank: 8Rank: 8

积分
6634
发表于 2019-11-26 20:25:20 | 显示全部楼层
呵呵。。。

新浪微博达人勋

6644

积分

1661

帖子

1661

贡献

Rank: 8Rank: 8

积分
6644
发表于 2019-11-27 17:40:30 | 显示全部楼层
有空一起交流一下

新浪微博达人勋

6677

积分

1667

帖子

1670

贡献

Rank: 8Rank: 8

积分
6677
发表于 2019-11-27 23:06:48 | 显示全部楼层
支持你哈...................................

新浪微博达人勋

6542

积分

1631

帖子

1637

贡献

Rank: 8Rank: 8

积分
6542
发表于 2019-11-28 08:15:02 | 显示全部楼层
顶起顶起顶起

新浪微博达人勋

7192

积分

1821

帖子

1772

贡献

Rank: 8Rank: 8

积分
7192

社区QQ达人最佳新人活跃会员热心会员

发表于 2019-11-28 08:22:37 | 显示全部楼层
打酱油的人拉,回复下赚取积分

新浪微博达人勋

6844

积分

1708

帖子

1712

贡献

Rank: 8Rank: 8

积分
6844
发表于 2019-11-28 08:43:49 | 显示全部楼层
支持,楼下的跟上哈~

新浪微博达人勋

6702

积分

1671

帖子

1677

贡献

Rank: 8Rank: 8

积分
6702

社区QQ达人

发表于 2019-11-28 15:47:38 | 显示全部楼层
这么强,支持楼主,佩服

新浪微博达人勋

7205

积分

1839

帖子

1771

贡献

Rank: 8Rank: 8

积分
7205

社区QQ达人最佳新人活跃会员热心会员

发表于 2019-11-28 23:23:30 | 显示全部楼层
垃圾内容,路过为证。

新浪微博达人勋

2874

积分

718

帖子

718

贡献

Rank: 6Rank: 6

积分
2874

社区QQ达人

发表于 2019-11-28 23:45:36 | 显示全部楼层
占坑编辑ing
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋|手机版|Archiver|Java教程网    

GMT+8, 2020-2-17 21:13 , Processed in 0.307820 second(s), 41 queries .

Powered by Discuz X3.2

© 2001-2013 JAVA教程网

快速回复 返回顶部 返回列表