JVM-双亲委派机制
JVM-双亲委派机制 双亲委派的好处 了解双亲委派之前先说一下双亲委派的 好处 : 1.主要是为了安全性,避免用户自己编写的类动态替换Java的一些核心类,比如Spring 2.避免类的重复加载,因为JVM中区分不同类,不仅仅根据类名,相同的class文件被不同的ClassLoader加载就是不同的两个类 双亲委派 虚拟机提供了3种类加载器,引导(Bootstrap)类加载器、扩展(Extension)类加载器、应用类加载器,以及父类加载器为AppClassLoader的自定义类加载器。 在Launcher中实现: 1.启动类加载器 启动类加载器主要加载的是JVM自身需要的类,这个类加载使用C++语言实现,是虚拟机自身的一部分,他负责将/lib路径下的核心类库或-Xbootclasspath参数指定路径下的jar包加载到内存中。注意由于虚拟机是按照文件名识别加载jar包的,如果文件名不被虚拟机识别,即使吧jar包丢到lib目录下也是没有用的(处于安全考虑Bootstrap启动类加载器只加载包名为java、javax。sun等开头的)。 2.扩展类加载器 扩展类加载器是指Sun公司(以被Oracle收购)实现的sun.misc.Launcher$ExtClassLoader类,由java语言实现的,是Launcher的静态内部类,它负责加载/lib/ext目录下或者由系统变量