JVM加载机制详解(9)
2023-05-02 来源:飞速影视
注意:JVM主要在程序第一次主动使用类的时候,才会去加载该类,也就是说,JVM并不是在一开始就把一个程序就所有的类都加载到内存中,而是到不得不用的时候才把它加载进来,而且只加载一次。
2.2 类加载器分类
jvm支持两种类型的加载器,分别是引导类加载器和 自定义加载器
引导类加载器是由c/c 实现的,自定义加载器是由java实现的。
jvm规范定义自定义加载器是指派生于抽象类ClassLoder的类加载器。
按照这样的加载器的类型划分,在程序中我们最常见的类加载器是:引导类加载器BootStrapClassLoader、自定
义类加载器(Extension Class Loader、System Class Loader、User-Defined ClassLoader)
上图中的加载器划分为包含关系而并非继承关系
启动类加载器
1、这个类加载器使用c/c 实现,嵌套再jvm内部
2、它用来加载Java的核心类库(JAVA_HOME/jre/lib/rt.jar、 resource.jar或sun.boot.class.path路径下的内容),用于提供JVM自身需要的类。
3、并不继承自java.lang.ClassLoader,没有父加载器
扩展类加载器
1、java语言编写,由sun.misc.Launcher$ExtClassLoader实现
2、从java.ext.dirs系统属性所指定的目录中加载类库,或从JDK的安装目录的jre/lib/ext 子目录(扩展目录)下加载类库。如果用户创建的JAR 放在此目录下,也会自动由扩展类加载器加载;派生于 ClassLoader。
3、父类加载器为启动类加载器
系统类加载器
1、java语言编写,由 sun.misc.Lanucher$AppClassLoader 实现
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)
www.fs94.org-飞速影视 粤ICP备74369512号