1. ClassLoader基本概念
    Java程序并不是一个可执行文件,而是由许多独立的类文件组成的,每一个文件对应一个Java类。这些类文件并非全部装入内存,而是根据程序需要逐渐载入。并且ClassLoader是JVM实现的一部分。
  2. ClassLoader加载流程
    当运行一个程序的时候,JVM启动,运行bootstrap classloader,该ClassLoader加载Java核心API,然后调用ExtClassLoader加载扩展API,最后AppClassLoader加载CLASSPATH目录下定义的Class。
另:类加载的过程使用了一种父类委托模式,主要原因是避免重复加载,还有出于安全因素的考虑。
  1. 一些重要的方法

    • loadClass方法,是ClassLoader的入口点
    class loadClass(String name, boolean resolve)
    • defineClass方法,接受由原始字节组成的数组,并把它转换成Class对象

    • findSystemClass方法,从本地文件系统装入文件

    • resolveClass方法,可以不完全装入类,也可以不完全装入类
    • findLoadedClass方法,允当一个缓存:
    当请求loadClass装入类时,它调用该方法来查看ClassLoader是否已装入这个类,这样可以避免重新装入已存在类所造成的麻烦
    • findClass方法,从本地文件系统使用实现的类装载器装载一个类
    • getSystemClassLoader方法
    • forName方法,Class类的一个静态方法
    Class.forName()调用Class.forName(name, initialize, loader);
    也就是说Class.forName("something");等同于Class.forName("something", true, CALLCLASS.class.getClassLoader());

最新文章

  1. C#设计模式系列:备忘录模式(Memento)
  2. Option
  3. Hibernate批量处理数据、HQL连接查询
  4. 边工作边刷题:70天一遍leetcode: day 86-2
  5. 集群搭建必备:虚拟机之一实现Host-only方式上网
  6. 51nod1057 N的阶乘
  7. 轻量级跨平台消息传递协议XML-RPC深度解析
  8. ubuntu下使用 chkconfig 是一种习惯
  9. 并发库应用之十二 & 常用集合问题汇总
  10. python一个命令开启http服务器
  11. Demo整合
  12. python 字符串和字节数互转
  13. Eclipse中一个项目调用另一个项目的资源
  14. python中函数与函数式编程(一)
  15. U帮忙U盘启动盘制作
  16. sys安装
  17. python进阶之函数和类内建魔法属性
  18. 【BZOJ1441】Min 拓展裴蜀定理
  19. C语言指针【转】
  20. Django - admin后台、auth权限

热门文章

  1. VS 引用dll版本冲突问题
  2. angularjs 动态加载指令------编译服务$compile
  3. 【转载】ASP.NET网站选购阿里云服务器的时候,阿里云账号个人认证以及企业认证有何不同
  4. 恶意代码分析学习之dll相关记录
  5. C语言的三套标准 C89(C90)、C99、C11
  6. 如何让django模型中的字段和model名显示为中文
  7. Flask之flask-sqlalchemy
  8. wampserver环境配置局域网访问
  9. QEMU简介
  10. python获取第前多少天的日期