- 从上图可以看出虚拟机中的Classloader的层次结构, 由最外层的Classloader去load全限定名指定的class,外层Classloader首先委托给该classloader的父classloader加载,父classloader再委托祖父classloader,直至到root classloader,然后从root classloader一级开始逐步向下一级查找class,找到即加载。
- 这样做的好处是能够保证java.*, javax.*等JRE的核心class库能由官方提供的classloader加载,而不是被恶意用户篡改。
- 根据运行你程序的容器来决定是哪种classloader进行loadClass()操作,通常情况由main函数作为入口则是system class loader, webapp中的则是webappclassloader, 可以使用Thread.currentThread().getContextClassLoader();来查看当前的classloader.
- 类无法自己选择自身的加载器,只有调用这个类的时候,外部指定classloader来load它。
本文深入解析了虚拟机中Classloader的层次结构,详细阐述了如何通过Classloader加载类,确保Java核心库的安全性,并解释了不同运行环境下的Classloader类型及使用方法。
1135

被折叠的 条评论
为什么被折叠?



