• JVM类加载器


    系统中的类加载器
      1.BootStrap ClassLoader
        a.启动ClassLoader
        b.加载rt.jar
      2.Extension ClassLoader
        a.扩展ClassLoader
        b.加载JAVA_HOME/lib/ext/*.jar
      3.App ClassLoader
        a.应用ClassLoader/系统ClassLoader
        b.加载ClassPath下
      4.Custom ClassLoader
        a.自定义ClassLoader
        b.自定义加载路径

    类加载器之间的协同工作方式 (双亲模式):
      a.自底(4)向上(1)检查类是否已经被加载
      b.自顶(2)向下(4)尝试加载类
      c.在查找类的时候,先在底层的Loader查找,是从下往上的。Apploader能找到,就不会去上层加载器加载

    一个概念上的ClassLoader
      a.双亲模式的问题:顶层ClassLoader,无法加载底层ClassLoader的类
      b.为了解决这个问题,Java引入了ContextClassLoader的概念
        是一个角色
        用以解决顶层ClassLoader无法访问底层ClassLoader的类的问题
        基本思想是,在顶层ClassLoader中,传入底层ClassLoader的实例



    ClassLoader的重要方法
      public Class<?> loadClass(String name) throws ClassNotFoundException
        载入并返回一个Class
      protected final Class<?> defineClass(byte[] b, int off, int len)
        定义一个类,不公开调用
      protected Class<?> findClass(String name) throws ClassNotFoundException
        loadClass回调该方法,自定义ClassLoader的推荐做法
      protected final Class<?> findLoadedClass(String name)
        寻找已经加载的类

  • 相关阅读:
    20200302 数据分析之numpy以及Jupyter
    20200228 scrapy高级使用及分布式
    20200226 请求库selenium
    20200224 爬虫-requests模块
    0219 请求上下文解析与g对象
    Matlab矩阵求导和求梯度有什么不同
    矩阵中范数的处理方式
    如何巧妙地使用递归
    遗传算法求最短路径
    nparray的维度和取值方式
  • 原文地址:https://www.cnblogs.com/413xiaol/p/6937948.html
Copyright © 2020-2023  润新知