zoukankan      html  css  js  c++  java
  • 类加载器

      1)默认情况下,Java应用启动过程涉及三个ClassLoader: Boostrap CLassloder , Extension CLassloder , SystemAppClass CLassloder(Application ClassLoader)

      2)不同的类加载器加载出来的类是不一样的,不同的类加载器加载同一个类会在方法区产生两个不同的类,彼此不可见,并且在堆中生成不同的Class实例。对于接口,其实就是一个特殊的类,和类一样,在堆中产生不同的class对象。
      3)类装载器需要保证类装载过程的线程安全,因为类只加载一次。
      4)ClassLoader的父子结构中,默认装载采用了父优先(并不是真的像java中继承的关系,而是组合的关系,即在"子类"中存在一个成员变量指向"父类"的引用。(高)Bootstrap ClassLoader->Extension ClassLoader->Application ClassLoader(低))
      5)双亲委托模型的简单理解:一般对于我们java程序员来说,类的加载使用的是双亲委派模型,即当一个类需要加载时,会将类传给ApplicationClassLoader,但是ApplicationClassLoader并不会加载,不管它是否能加载,而是传给它的"父类"ExtensionClassLoader,Extension ClassLoader同样不会加载,同样传给 Bootstrap ClassLoader(注意不是我们常说的那种父类,但是可以这样理解),这时Bootstrap ClassLoader会判断它是否能加载,能加载就直接加载了,不能加载就传给ExtensionClassLoader,ExtensionClassLoader同样的判断是否能加载,能加载就直接加载,不能加载就传给ApplicationClassLoader,然后ApplicationClassLoader也判断能否加载,如果还是不能加载应该就是报ClassNotFoundException了。

  • 相关阅读:
    检查所有资产的剩余折旧年限
    如何返回standard API 的错误信息
    Host concurrent的建立方法
    Project的目录结构
    计划外折旧(unplanned deprn)API开发例程
    UML学习笔记
    ASP.Net2.0使用Log4Net(二)
    NBear学习笔记(一)
    ASP.Net2.0使用Log4Net(一)
    ASP.net前后台调用
  • 原文地址:https://www.cnblogs.com/yangrongkuan/p/12028629.html
Copyright © 2011-2022 走看看