Java类加载机制

类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个 java.lang.Class对象,用来封装类在方法区内的数据结构。

类的加载

  • Java文件通过编译成.class文件后,通过类加载器再加载到JVM中。

  • 类加载七个过程:加载、验证、准备、解析、初始化、使用、卸载

三种类加载器

Bootstrap ClassLoader(启动类加载器) > Extention ClassLoader(拓展类加载器) > Appclass Loader(应用程序类加载器)

类加载的三种方式

  • 通过命令行启动应用时由JVM初始化加载含有main()方法的主类
  • 通过Class.forName()方法动态加载,会默认执行初始化块(static{}),但是Class.forName(name,initialize,loader)中的initialze指定是否要执行初始化块。
  • 通过**ClassLoader.loadClass()**方法动态加载,不会执行初始化块。

自定义类加载器

  • 遵守双亲委派模型:继承ClassLoader,重写findClass()方法。

  • 破坏双亲委派模型:继承ClassLoader,重写loadClass()方法。

  • 通常我们推荐采用第一种方法自定义类加载器,最大程度上的遵守双亲委派模型。

  • 实现步骤
    (1)创建一个类继承ClassLoader抽象类
    (2)重写findClass()方法
    (3)在findClass()方法中调用defineClass()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值