JVM------类加载器详解

旧城等待, 2022-03-15 09:44 392阅读 0赞

JVM———类加载器详解

  • 1.图解类加载器工作流程
  • 2.类加载器种类
  • 3.类加载器的加载顺序
  • 4.一些需要了解的机制

1.图解类加载器工作流程

在这里插入图片描述

2.类加载器种类

  1. 启动类加载器(Bootstrap)
    最顶层的加载类,主要加载核心类库,%JRE_HOME%\lib下的rt.jar、resources.jar、charsets.jar和class等
  2. 扩展类加载器(Extension)
    加载目录%JRE_HOME%\lib\ext目录下的jar包和class文件
  3. 应用程序类加载器(AppClassLoader)
    加载当前应用的classpath的所有类,用户自定义的类就是通过它加载
  4. 自定义载器
    自己定义的类加载器(暂不做详解)

3.类加载器的加载顺序

在这里插入图片描述

4.一些需要了解的机制

  1. 双亲委派机制
    当一个类收到了类加载请求,他首先不会尝试自己去加载这个类,而是把这个请求委派给父类去完成,每一个层次类加载器都是如此,因此所有的加载请求都应该传送到启动类加载其中,只有当父类加载器反馈自己无法完成这个请求的时候(在它的加载路径下没有找到所需加载的Class),子类加载器才会尝试自己去加载。
    采用双亲委派的一个好处是比如加载位于 rt.jar 包中的类 java.lang.Object,不管是哪个加载器加载这个类,最终都是委托给顶层的启动类加载器进行加载,这样就保证了使用不同的类加载器最终得到的都是同样一个 Object对象。
  2. 沙箱安全
    用到双亲委派机制,可以避免:自己想new一个系统string类,而自己也定义有一个string类。 这种情况下就可以避免new的对象不统一
    在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,392人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JVM

    类与类加载器 类加载器虽然只用于实现类的加载动作,但它在Java程序中起到的作用却远超类加载阶段。对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立其在Ja

    相关 JVM详解

    前言 在上一篇中,通过下面这幅图大致了JVM整体的内部运行结构图,在JVM的结构中,类加载子系统作为连接外部class文件与真正将class文件加载到运行时数据区,承担着

    相关 JVM详解

    首先来了解一下字节码和class文件的区别: 我们知道,新建一个java对象的时候,JVM要将这个对象对应的字节码加载到内存中,这个字节码的原始信息存放在classpat

    相关 JVM

    JVM类加载器 对于任何一个类,都需要由加载它的类加载器和类本身一同确立在Java虚拟机中的唯一性,每一个类加载器,都拥有独立的类名称空间。因此比较两个类是否相等(ins