JVM------类加载器详解
JVM———类加载器详解
- 1.图解类加载器工作流程
- 2.类加载器种类
- 3.类加载器的加载顺序
- 4.一些需要了解的机制
1.图解类加载器工作流程
2.类加载器种类
- 启动类加载器(Bootstrap)
最顶层的加载类,主要加载核心类库,%JRE_HOME%\lib下的rt.jar、resources.jar、charsets.jar和class等 - 扩展类加载器(Extension)
加载目录%JRE_HOME%\lib\ext目录下的jar包和class文件 - 应用程序类加载器(AppClassLoader)
加载当前应用的classpath的所有类,用户自定义的类就是通过它加载 - 自定义载器
自己定义的类加载器(暂不做详解)
3.类加载器的加载顺序
4.一些需要了解的机制
- 双亲委派机制
当一个类收到了类加载请求,他首先不会尝试自己去加载这个类,而是把这个请求委派给父类去完成,每一个层次类加载器都是如此,因此所有的加载请求都应该传送到启动类加载其中,只有当父类加载器反馈自己无法完成这个请求的时候(在它的加载路径下没有找到所需加载的Class),子类加载器才会尝试自己去加载。
采用双亲委派的一个好处是比如加载位于 rt.jar 包中的类 java.lang.Object,不管是哪个加载器加载这个类,最终都是委托给顶层的启动类加载器进行加载,这样就保证了使用不同的类加载器最终得到的都是同样一个 Object对象。 - 沙箱安全
用到双亲委派机制,可以避免:自己想new一个系统string类,而自己也定义有一个string类。 这种情况下就可以避免new的对象不统一
还没有评论,来说两句吧...