类加载的过程

  • 验证:根据JVM规范来校验.class文件是否符合要求,只有符合要求的.class类文件才能被加载到JVM中
  • 准备:给static变量分配内存空间并赋0值
  • 解析:把符号引用替换为直接引用
  • 初始化:给变量赋初始值,执行static语句块

类加载器和双亲委派机制

类加载器

JVM中的类加载器有

  • Bootstrap ClassLoader:加载JDK目录下的lib目录下的类
  • Extension ClassLoader:加载lib/ext目录下的类
  • Application ClassLoader:加载ClassPath路径下的类,即你写的类
  • 自定义ClassLoader:自定义类加载器,根据用户需求加载类

双亲委派机制

JVM中的类加载器是有层级结构的,从父到子依次为BootstrapClassLoader、ExtensionClassLoader、ApplicationClassLoader、自定义ClassLoader

双亲委派机制的意思就是,如果一个类加载器需要加载某个类,那么首先它会将该类的加载权交给自己的父加载器,如果父加载器不能加载该类,再由当前加载器来加载