JVM --类加载器--双亲委派机制

1,类加载器是干什么的?

       类加载器是将.class文件中的字节码翻译成内存中对应的结构,从而被jvm虚拟机使用,classloader也就是起这个翻译作用。

将类预处理后交付给运行时数据区然后由执行引擎来执行程序。

2,双亲委派机制

所谓的双亲委派模型就是在加载一个类时,先将这个类交给父级加载器加载,如果父级加载器无法加载再由自己加载
这样,我们可以保证Object类永远都是由启动类加载器加载。

作用:双亲委派是为了安全而设计的,假如我们自定义了一个java.lang.Integer类如下,当使用它时,因为双亲委派,会先使用BootStrapClassLoader来进行加载,这样加载的便是jdk的Integer类,而不是自定义的这个,避免因为加载自定义核心类而造成JVM运行错误。
 

JVM --类加载器--双亲委派机制_第1张图片

ClassLoader种类

启动类加载器(Bootstrap ClassLoader)
加载放在/lib下的或被-Xbootclasspath参数所指定的路劲中一些事先定义好的类库,比如rt.jar。注意,即使你放置一个自己的my.jar到这些路劲下也是不会被加载的。

扩展类加载器(Extension ClassLoader)
加载/lib/ext下的类库,或者被java.ext.dirs系统变量指定位置的类库。

应用程序类加载器
加载开发者自己定义的classpath上的类库,比如我们自己编写的java代码编译成的class文件就是由这个类加载器加载的。

自定义类加载器
有时候,应用程序类加载器不能满足我们的要求,会自己定义一些类加载器。但其实这应该也算一种应用程序类加载器。

JVM-双亲委派机制https://www.cnblogs.com/parent-absent-son/p/9872443.html

ClassLoader之浅谈双亲委派模型https://www.jianshu.com/p/6d4eca6cb520

 

你可能感兴趣的:(Java)