摘要:扩展类加载器这个类加载器负责加载目录中的。应用程序类加载器这个类加载器负责加载用户类路径上所指定的类库。例如,它存放在中,无论哪个类加载器进行加载最终都会委派给顶层启动类加载器进行加载,因此类在程序的各种类加载器中都是同一个类。
类加载过程
1、加载
2、验证
3、准备
4、解析
5、初始化
双亲委派模型
从Java虚拟机的角度来讲,只存在两种不同的类加载器:一种是启动类加载器(Bootstrap ClassLoader),这个类加载器使用c++语言实现,是虚拟机自身的一部分;另一种就是所有其他的类加载器,这些类加载器都由Java语言实现,独立于虚拟机外部,并且全部都继承自抽象类java.lang.ClassLoader
双亲委派模型
1、启动类加载器(Bootstrap ClassLoader):这个类加载器负责加载
2、扩展类加载器(Extension ClassLoader):这个类加载器负责加载
3、应用程序类加载器(Application ClassLoader):这个类加载器负责加载用户类路径上所指定的类库。
双亲委派模型的工作过程:
如果一个类加载器收到类加载请求,首先它不会自己尝试去加载这个类,而是把加载请求委派给父类加载器去完成,每一个层次的类加载器都是如此,无论哪一个类加载器请求加载最终都会委派给最顶层的启动类加载器进行加载。只有当父类加载器反馈自己无法完成加载时,子类才会尝试自己去加载。
这样有一个显而易见的好处就是Java类随着它的类加载器一起具备了一种有优先级的层次关系。例如java.lang.Object,它存放在rt.jar中,无论哪个类加载器进行加载最终都会委派给顶层启动类加载器进行加载,因此Object类在程序的各种类加载器中都是同一个类。
欢迎加入学习交流群569772982,大家一起学习交流。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/67956.html
摘要:如果需要支持类的动态加载或需要对编译后的字节码文件进行解密操作等,就需要与类加载器打交道了。双亲委派模型,双亲委派模型,约定类加载器的加载机制。任何之类的字节码都无法调用方法,因为该方法只能在类加载的过程中由调用。 jvm系列 垃圾回收基础 JVM的编译策略 GC的三大基础算法 GC的三大高级算法 GC策略的评价指标 JVM信息查看 GC通用日志解读 jvm的card table数据...
摘要:前面提到,对于数组类来说,它并没有对应的字节流,而是由虚拟机直接生成的。对于其他的类来说,虚拟机则需要借助类加载器来完成查找字节流的过程。验证阶段的目的,在于确保被加载类能够满足虚拟机的约束条件。 Java 虚拟机将字节流转化为 Java 类的过程。这个过程可分为加载、链接以及初始化 三大步骤。 加载是指查找字节流,并且据此创建类的过程。加载需要借助类加载器,在 Java 虚拟机中,类...
摘要:当程序使用某个类时,如果该类还没被初始化,加载到内存中,则系统会通过加载连接初始化三个过程来对该类进行初始化。一旦一个类被加载到中之后,就不会再次载入了。它既可以从本地文件系统获取二进制文件来加载类,也可以远程主机获取二进制文件来加载类。 当程序使用某个类时,如果该类还没被初始化,加载到内存中,则系统会通过加载、连接、初始化三个过程来对该类进行初始化。该过程就被称为类的初始化 类加载 ...
摘要:学习能更深入的理解这门语言,能理解语言底层的执行过程,深入到字节码层次。 目录 前言 程序的运行 1.JVM类加载机制 ①一般在什么情况下会去加载一个类?也就是说,什么时候.class字节码文件中加载这个类到JVM内存里来? ②验证、准备、初始化 ③初始化 2.类加载器和双亲委派机制 ...
摘要:以上文中的类的加载过程为例,它的加载器为系统类加载器。自定义加载器编写自定义加载器并不困难,只要继承抽象类并覆盖方法就行了。源码来自参考资料类加载机制与类加载器架构深入探讨类加载器 序 我是在关于Java的面试题里了解到类加载器的,在这之前从未想过Java里类是如何被加载、解析的,一直以为只要Import就好了。事实上Java类加载器是一块非常重要的内容,可以用在类层次划分、OSGi、...
阅读 2499·2021-09-30 10:00
阅读 3463·2021-09-22 10:54
阅读 6092·2021-09-07 10:28
阅读 2883·2019-08-29 13:53
阅读 713·2019-08-29 12:42
阅读 932·2019-08-26 13:51
阅读 1223·2019-08-26 13:32
阅读 2987·2019-08-26 10:39