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

  • 相关阅读:
    Java高级工程师面试题总结及参考答案
    Java面试通关要点汇总整理【终极版】
    40道Java基础常见面试题及详细答案
    Java方向如何准备BAT技术面试答案(汇总版)
    10-01 Java 类,抽象类,接口的综合小练习--运动员和教练
    div在页面垂直居中方法---增强改进版
    TortoiseSVN切换更改登录账号密码
    09-04 java 接口
    09-03 Java 抽象类
    09-02 java 多态
  • 原文地址:https://www.cnblogs.com/yangrongkuan/p/12028629.html
Copyright © 2011-2022 走看看