类加载器

两种累加载器

1.引导类加载器(Bootstrap Classloader):

由C和C++语言实现的

2.自定义类加载器(User-Defined Classloader)

从概念上讲,自定义类加载器一般是指程序员手动编写的类加载器,但是JVM规范中并没有这样的定义,凡是派生于抽象类Classloader的类加载器均为自定义类加载器 无论类加载器怎样划分,我们最常见的类加载器始终只有三个:引导类加载器,系统类加载器,扩展类加载器。
从一些类结构我们可以看出:都继承了Classloader

image.png

image.png

3.几种类加载器之间的关系

类似于文件树

4.代码验证

  • 如何获取类加载器
  • 各个类加载器的关系
  • Java核心包使用的什么类加载器
public class ClassloaderTest {
    /**
     * 如何获取类加载器
     * 各个类加载器的关系
     * Java核心包使用的什么类加载器
     */
    @Test
    public void testAllClassloader(){
        //1.获取系统类加载器  sun.misc.Launcher$AppClassLoader@18b4aac2
        ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
        System.out.println("systemClassLoader = " + systemClassLoader);
        //2. 扩展类加载器   sun.misc.Launcher$ExtClassLoader@555590
        ClassLoader extClassLoader = systemClassLoader.getParent();
        System.out.println("extClassLoader = " + extClassLoader);
        //3.试图获取 引导类加载器 null 无法获取
        ClassLoader bootstarpClassLoader = extClassLoader.getParent();
        System.out.println("bootstarpClassLoader = " + bootstarpClassLoader);

        //查看自己的类默认使用的是什么加载器 : sun.misc.Launcher$AppClassLoader@18b4aac2  和上个系统类加载器是同一个对象
        ClassLoader currentlassLoader = ClassloaderTest.class.getClassLoader();
        System.out.println("currentlassLoader = " + currentlassLoader);

        //查java 的Spring类使用的是什么加载器  NULL  可以推测为是  引导类加载器,JDK 的核心类库均为 引导类加载器
        ClassLoader stringClassLoader = String.class.getClassLoader();
        System.out.println("stringClassLoader = " + stringClassLoader);

    }
}

如有错误之处还请大家不要吝啬你们的批评~~欢迎大家指出
我的邮箱:amumulimerence@gmail.com

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 微信搜一搜: 全栈小刘,获取文章全套 pdf版本 1、内存结构概述 如果自己想手写一个Java虚拟机的话,主要考...
    全栈小刘阅读 2,241评论 0 1
  • 一、类加载器概述 JVM支持两种类型的类加载器 。分别为引导类加载器(Bootstrap ClassLoader)...
    放开好人阅读 2,187评论 0 0
  • 虚拟机设计团队把类加载阶段中的 “通过一个类的全限定名来获取描述此类的二进制字节流” 这个动作放到虚拟机外部去实现...
    Leocat阅读 1,153评论 0 0
  • 在我的深入理解JVM类加载机制中,类加载器的部分我只谈了一点点内容,这篇文章将深入了解Java中的类加载器是如何工...
    卡巴拉的树阅读 5,412评论 0 3
  • 渐变的面目拼图要我怎么拼? 我是疲乏了还是投降了? 不是不允许自己坠落, 我没有滴水不进的保护膜。 就是害怕变得面...
    闷热当乘凉阅读 9,804评论 0 13

友情链接更多精彩内容