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了。

  • 相关阅读:
    c++中ctype常用函数总结(isprint isblank..)
    c++的const总结(转)
    c++重载输入输出运算符
    c++中的友元重载
    c++函数模板二栈实现
    c++函数模板1
    c++中IO输入输出流总结<二>
    c++中IO输入输出流总结<一>
    四层与七层得区别(转)
    ORACLE操作
  • 原文地址:https://www.cnblogs.com/yangrongkuan/p/12028629.html
Copyright © 2011-2022 走看看