Java之ClassLoader基础知识

  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());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值