类加载器及双亲委派机制
类加载器
作用:加载Class文件~
- 虚拟机自带的加载器
- 启动类(根)加载器
- 扩展类加载器
- 应用程序加载器
package com.wang.jvm;
public class Car {
public static void main(String[] args) {
//类是模板,对象是具体的
Car car1 = new Car();
Car car2 = new Car();
Car car3 = new Car();
System.out.println(car1.hashCode());
System.out.println(car2.hashCode());
System.out.println(car3.hashCode());
Class<? extends Car> aClass = car1.getClass();
ClassLoader classLoader = aClass.getClassLoader();
System.out.println(classLoader);//AppClaasLoader
System.out.println(classLoader.getParent());//ExtClassLoader \jre\Lib\ext
System.out.println(classLoader.getParent().getParent());//null 1.不存在的 2.java程序获取不到~ rt.jar
}
}
双亲委派机制
双亲委派机制:安全
APP-->EXC-->BOOT(最终执行)
- 类加载器收到类加载的请求
- 将这个请求向上委托给父类加载器去完成,一直向上委托,直到启动类加载器
- 启动加载器检查是否能够加载当前这个类,能加载就结束,使用当前的加载器,否则,抛出异常,通知子加载器进行加载
- 重复步骤3
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?