Java的类加载器

静态加载 vs 动态加载

  • 动态加载:程序在运行时调用相应方法,即使其他方法是错误的,程序依旧会执行。通过动态加载可以让程序的可延长性大大提升,对以后的维护和扩展有重要意义。
  • 静态加载:程序在编译时执行。在执行过程中加载所有可能执行到的程序。在这种加载方式下,只要加载中一个方法出错,程序就不能运行。我们一般写程序默认的是静态加载。但是其实还是看到new进行隐式调用。

两个异常 (exception)

  • 静态加载的时候如果在运行环境中找不到要初始化的类, 抛出的是 NoClassDefFoundError, 它在 JAVA 的异常体系中是一个 Error,这个时系统环境得问题。
  • 动态态加载的时候如果在运行环境中找不到要初始化的类, 抛出的是 ClassNotFoundException, 它在 JAVA 的异常体系中是一个 checked 异常,这个是在双亲委派模型从上到下的目录都没有找到的情况下,才会报出这个错误。
  • checked是编译时报的错,error是系统错误或者底层资源错误。

类加载器 vs 反射

  • 类加载器强调的如何从对象拿到该类加载器的过程。Class.forName(), classloader.loadClass()
  • 反射强调的是运行期间拿到该对象自己的类加载器之后可以反射出构造器,所有成员变量,所有成员方法,并且可以在运行过程中执行这些方法。
  • 也就是类加载器是获取加载器,反射是强调获得后反射出方法和成员变量和方法。

动态加载 vs 动态编译JIT编译

  • 同时还要区分类的动态加载利用类加载器;而提高代码效率,不用重复解释运行的JIT动态编译。
  • 动态加载:类加载器:代码更加灵活。
  • 动态编译:代码执行效率更高 jit只是动态编译的一种。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值