zoukankan      html  css  js  c++  java
  • JVM类加载机制二

    类加载器与双亲委派模型

    类加载器

    类加载的操作不是有虚拟机完成的,而是由类加载器完成的,这样可以让程序定义决定加载哪个类。
    类加载器的分类:
    从虚拟机的角度有两种加载器,一种是启动类加载器Bootstrap Classloader,它是由C语言编写的,是虚拟机的一部分;另一种的其他的所有加载器,它是由Java编写的,存在于虚拟机外部,这些加载器都继承于Java.lang.ClassLoader类
    从开发者角度来说共有四种加载器,启动类加载器BootStap ClassLoader、扩展类加载器Extension ClassLoader、应用程序加载器Application ClassLoader、还有一种用户自定义加载器。
    启动类加载器
    负责将JAVA/HOME/lib文件夹下的类库加载到内存中。开发者无法直接使用启动类加载器进行类加载的任务
    扩展类加载器
    负责将JAVA/HOME/lib/ext目录或者由系统变量java.ext.dir指定的位置中的所有类库加载进来。
    应用程序类加载器/系统类加载器
    负责加载用户类路径上(ClassPath)所指定的类库。如果用户没有自定义加载器,那么这个就是程序中默认的类加载器。此类加载器可以通过
    ClassLoader.getSystemClassLoader()获取。

    双亲委派模型

    当一个类加载器接到类加载任务时,会将其交给它的父类加载器,所以最终类加载任务会传递到启动类加载器,如果父类加载器不能完成加载任务,则由子类加载器尝试完成类的加载。

    使用双亲委派模型的好处
    无论哪个类加载器去加载一个类,最后加载这个类的类加载器是同一个,这保证了这个类在虚拟机中的唯一性。

    参考:《深入理解Java虚拟机》

  • 相关阅读:
    bstToDoublyList
    Springboot系列1_什么是Springboot
    servlet总结
    JavaFx开发桌面软件
    在Emacs中使用plantuml画UML图
    IIS7.0上传文件限制的解决方法
    开源免费的天气预报接口API以及全国所有地区代码(国家气象局提供)
    如何得到天气情况?在那个接口获取?
    Windows Update 时出现8024402C的错误
    OC中copy的使用
  • 原文地址:https://www.cnblogs.com/ozho/p/10600228.html
Copyright © 2011-2022 走看看