1.类加载:双亲委托机制双亲委派机制

mac2024-08-08  55

类加载:双亲委托机制/双亲委派机制

类加载:当程序中需要使用到的某个类的时候,必须先将这个类对应的.class文件加载到内存中。

ClassLoader类加载器负责到指定的路径中查询.class文件,并且加到内存中,将其生成一个Class类对象。

Java中存在三种类加载器

1. BootStrapClassLoader启动类加载器/引导类加载器: 主要负责加载系统中的核心类库, 类加载路径:%JAVA_HOME%\jre\lib 启动类加载器通过C++实现的,用户是无法直接调用。 2. ExtClassLoader扩展类加载器: 主要负责加载系统中的扩展类。 类加载路径:%JAVA_HOME%\jre\lib\ext 使用Java编写的。 3.AppClassLoader应用类加载器/本地类加载器: 主要负责加载本地类,自己编写的Java类。 加载路径:%CLASSPATH% 使用Java编写的。

双亲委托机制:

1.【启动类加载器】是【扩展类加载器】的父类,【扩展类加载器】是【本地类加载器】的父类。 2.当一个类需要被加载的时候, ①向上委派阶段 【本地类加载器】查询是否加载过,有则使用,若没有,则委托给父类【扩展类加载器】, 【扩展类加载器】查询自己的缓存是否加载过,有则返回,若仍没有,则委托给【启动类加载器】 【启动类加载器】查询自己的缓存是否加载,有则返回,没有则让【扩展类加载器】去加载, ②向下加载阶段 【扩展类加载器】收到信息后会让【本地类加载器】去加载该类, 【本地类加载器】会去查询自己的加载路径中是否存在,有则加载并使用,没有则抛出异常:ClassNotFoundException。

最新回复(0)