Jvm-类加载器及双亲委派机制

类加载器

类加载器概述

作用:
	加载Class文件
	
加载Class文件是Java的核心标识

举例:
1new Cola();都有什么操作?
	1.有一个实体类Cola,该类是抽象的,当我们进行new Cola()就会有具体的实例了,具体实例的引用在java栈里面,具体的实例在堆里面(名称在栈里面,真正的数据在堆里面,根据内存地址去找到堆里面的数据)
	
类是模板(抽象的),对象是具体的
	
2Cola.class文件都会在JVM经历什么过程?
1.Cola.class进入到Class Loader,加载并初始化,得到Cola Class

2.接着进行实例化(关键词是new),得到Cola1Cola2Cola3,etc对象(这些对象都来自于Cola Class这一个模板)
    
    怎么将对象再变成Class呢?
    对象.getClass()
    
    怎么将Class再变成ClassLoader呢?
    类.getClassLoader()
	

类加载器种类

1.虚拟机自带的加载器
2.启动类(根)加载器
	BootClassLoader
3.扩展类加载器
	ExtClassLoader  地址:\jre\lib\ext
4.应用程序加载器
	AppClassLoader 
	
如果输出加载器的值是null,则表明java调用不出来该加载器,该加载器是用C或者C++等编程语言进行编写的

双亲委派机制

双亲委派机制:保障程序安全

向上找加载器:
	App --> EXC --> BOOT(最终执行)
    
如果最上层的加载器没有相应的jar包,就一层层往下找

当类加载器收到类加载的请求,将这个请求向上委托给父类加载器去完成,一直向上委托,直到根加载器,根加载器检查是否能够加载当前这个类,如果能加载就使用当前的加载器并结束,否则抛出异常,通知子加载器进行加载,不断的向下找能加载的加载器直到找到

我们所编写的程序大部分都是在AppClassLoader中加载的

如果所有加载器都不能进行加载该类,则会报错:Class Not Found
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值