美文网首页
不就是类加载

不就是类加载

作者: xian_cheng | 来源:发表于2019-03-12 13:40 被阅读0次

最近在看《深入理解java虚拟机》这本书,看到类加载这章时,感觉之前对类加载的理解还不是很深,尤其是双亲委派模型,这里总结下自己对这个模型的理解。

双亲委派模型

image.png
借用一下类加载中的双亲委派模型图。
从java虚拟机的角度,存在三种系统提供的类加载器。
  1. 引导类加载器(Bootstrap Classloader)
    负责加载<JAVA-HOME>\lib目录中的类库到虚拟机内存中。
  2. 扩展类加载器(Extension Classloader)
    负责加载<JAVA-HOME>\lib\ext 目录中的类库到虚拟机内存中。
  3. 系统类加载器(Application Classloader)
    负责加载用户类路径上所指定的类库,可以直接使用这个类加载器,也可自定义自己的类加载器。
    双亲委派模型的工作过程是:如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,只有当父类加载器无法完成加载时,子加载器才会尝试自己去加载。
    首先,以ClassA这个用户自定义类为例说明整个加载过程,假如开发人员自定义了一个类加载器A用来加载ClassA,类加载器A加载这个类时,首先判断这个类是否已经被加载,然后通知类加载A的父类系统类加载器去加载,系统类加载器也是重复这个过程,通过这个过程,保证在一个类加载器中,同一个类不会被重复加载。
    另外,如果用户自己编写了一个java.lang.Object的类,利用双亲委派模型的话,就能保证Object类的加载最终都会委派给处于模型最顶端的启动类加载器进行加载,保证java最基础的行为,避免应用程序变得一片混乱。
    最后,要注意一点的是,Java 虚拟机是如何判定两个 Java 类是相同的。Java 虚拟机不仅要看类的全名是否相同,还要看加载此类的类加载器是否一样。只有两者都相同的情况,才认为两个类是相同的。即便是同样的字节代码,被不同的类加载器加载之后所得到的类,也是不同的。

相关文章

  • 不就是类加载

    最近在看《深入理解java虚拟机》这本书,看到类加载这章时,感觉之前对类加载的理解还不是很深,尤其是双亲委派模型,...

  • 第一章 类加载过程

    要点 类加载过程 类加载器 一、类加载过程 1.类的加载过程 类的加载 .class文件过程分为:加载---->连...

  • 深入理解jvm类加载机制

    1.什么是类加载? 类加载机制一个很大的体系,包括类加载的时机,类加载器,类加载时机。 1.1类加载过程 加载器加...

  • java基础知识之java类加载器

    1. 什么是类加载器 类加载器就是用来加载类的东西!类加载器也是一个类:ClassLoader 类加载器可以被加载...

  • JVM类加载入门

    一 类加载顺序 class类加载-->验证-->准备--->解析--->初始化 class类加载:通过类加载器加载...

  • java类加载器及其原理

    java类加载器 : java中默认有三种类加载器:引导类加载器,扩展类加载器,系统类加载器(也叫应用类加载器) ...

  • 深入浅出“类加载器”

    内容概述 “类加载”介绍 “类加载器”介绍 深入“类加载器” 深入“父亲委托机制” 一,“类加载”介绍 “加载”是...

  • 《深入理解JVM虚拟机》读书笔记-类加载器&Java模块化系统

    类加载器 一.类加载器 1.1 类与类加载器 类加载器的定义: Java虚拟机设计团队有意把 类加载阶段中 的“ ...

  • 类加载机制(一)

    加载机制系列类加载机制(一)类加载机制(二)类加载机制(三) 类加载机制 1.JVM把class文件加载到内存,对...

  • 学习笔记 | JAVA的反射(二)

    利用反射机制动态加载类 、获取类的方法、获取类的属性 编译时刻加载类是静态加载类,运行时加载类是动态加载类 正常创...

网友评论

      本文标题:不就是类加载

      本文链接:https://www.haomeiwen.com/subject/avoypqtx.html