java Jvm 双亲委派模型
一句话总结:类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。
官方:Java类加载器(英语:Java Classloader)是Java运行时环境(Java Runtime Environment)的一部分,负责动态加载Java类到Java虚拟机的内存空间中。类通常是按需加载,即第一次使用该类时才加载。由于有了类加载器,Java运行时系统不需要知道文件与文件系统。
JVM中有3个默认的类加载器:
1、启动类加载器 (Bootstrap Class Loader)
2、扩展类加载器(Extension Class Loader)
3、应用程序类加载器(Application Class Loader)
1、当需要加载类时,会优先委派当前所在的类的加载器的父加载器去加载这个类。
2、如果父加载器无法加载到这个类时,再尝试在当前所在的类的加载器中加载这个类。
意义:
1、因为双亲委派是向上委托加载的,所以它可以确保类只被加载一次,避免重复加载;
2、可以避免核心类被串改:Java的核心API都是通过引导类加载器进行加载的,如果别人通过定义同样路径的类比如java.lang.Integer,类加载器通过向上委托,两个Integer,那么最终被加载的应该是jdk的Integer类,而并非我们自定义的,这样就避免了我们恶意篡改核心包的风险