分享

JVM学习笔记-类加载机制

 昵称63557093 2020-03-03

  JVM中的类的唯一性:

  由类加载器+和这个类本身确定。

  双亲委派模型

图片描述

  类加载请求时,先委托给父类进行加载,父加载器也是如此。当父类加载器不能加载事,当前类才进行加载。

  tomcat正统加载模型

  tomcat的类加载器介绍

  对应的结构图如下:

图片描述

  破坏双亲委派模型

  1.java1.2之前的程序做兼容 向前兼容

  2.JNDI等,(允许父类加载器委托子类加载器加载,打通了双亲委派模型的逆向)。

  (使用,线程上下文加载器 Thread Context ClassLoader,这个由java.lang.Thread中的setContextClassLoader()方法进行设置)

  3.OSGi(热部署可以平级查找):

  举例说明:

  Bundle A:声明发布了packageA,依赖了java_*的包

  Bundle B:声明依赖于packageA和packageC,同时也依赖java.*包

  Bundle C:声明发布了packageC,依赖了packageA

  其对应的结构图如下:

图片描述

  OSGi加载规则如下:

  将ava.*开头的委派给父类加载器。

  否则委派列表名单内的类,委派给父类加载器。

  否则Import列表中的类委托给Export这个类的Bundle加载器

  否则Bundle的classPath,自己的加载器。

  否则,查找类是否在自己的Fragment Bundle中,如果在则,委托给Fragment Bundle的类加载器

  否则,查找Dynamic Import列表的Bundle,委托给对应的Bundle加载

  否则,查找失败。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多