累加载的生命周期:加载、验证、准备、解析、初始化、使用、卸载七个阶段,其中解析很可能在初始化之后(动态绑定),验证、准备和解析统称连接。


  • 大部分java程序(程序=数据+算法)都会使用以下三种系统提供的类加载器:

  • 启动类加载器:加载lib目录的类库和-Xbootclasspath参数所指定的路径中的类库,它无法被java程序直接使用。

  • 扩展类加载器:加载lib/ext目录的类库,java程序可以直接使用扩展类加载器。

  • 应用程序类加载器:它是ClassLoader中的getSystemClassLoader()方法的返回值,它也叫系统类加载器,它加载用户类路径下所指定的类库,它是默认的类加载器。

双亲委派模型的工作过程所有加载请求最终都应该传送到顶层的启动类加载器,只有当父加载器反馈自己无法完成加载请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己加载类加载器的父子关系通过组合的方式实现,而非继承关系注:双亲委派模型主要出现过三次较大规模的“被破坏”的情况。




参考书籍:《深入理解java虚拟机》