1.类从加载到使用,会经历:加载(当代码中使用到类时,会将.class字节码文件加载到jvm内存)-->验证(是否符合规范)-->准备(分配内存空间)-->解析(引用地址指向)-->初始化(对变量进行赋值)-->使用-->卸载
2.java中的类加载器
2.1启动类加载器
Bootstrap ClassLoader,主要负责加载java目录下的核心类 %JRE_HOME%\lib目录下内容
2.2扩展类加载器
Extension ClassLoader,主要加载 %JRE_HOME%\lib\ext目录下类
2.3应用程序类加载器
Application ClassLoader,主要加载当前应用的ClassPath环境变量所指定路径中的类(简单理解成加载自己的代码)
2.4自定义类加载器
根据自己的需求加载自己的类
2.5双亲委派机制
应用程序类加载器需要加载一个类,首先委派给父类加载器去加载,最终传递到顶层类加载器,如果在父类加载器负责范围内没有找到这个类,会给自己的子类加载器,如果自己管理范围内也找不到需要加载的就会抛出:ClassNotFoundException 这个异常了
3.双亲委派机制的好处
3.1保证了JVM提供的核心类不被篡改,保证class执行安全
3.2防止重复加载同一个class