zoukankan      html  css  js  c++  java
  • 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)
        寻找已经加载的类

  • 相关阅读:
    银行业务调度系统
    交通灯管理系统
    Java高新技术
    Java反射机制
    java的集合框架
    正则表达式
    IPD CBB
    TCP的可靠传输(依赖流量控制、拥塞控制、连续ARQ)
    等价类划分
    Pycharm常用配置汇总
  • 原文地址:https://www.cnblogs.com/413xiaol/p/6937948.html
Copyright © 2011-2022 走看看