读书人

Java虚拟机-关于ClassLoader

发布时间: 2012-09-05 15:19:35 作者: rapoo

Java虚拟机---关于ClassLoader
1、虚拟机的核心原则:保证类的安全性

2、ClassLoader使用三种机制来保证类的安全
A、使用双亲职责模式来加载类
B、只有在同一个ClassLoader且同一个包下面的类才能互相访问
C、设置ClassLoader的例外,有一些包中的类不能进行加载

3、ClassLoader的双亲链:
启动加载类-->扩展加载类-->系统加载类-->用户自定义加载类

4、在2中描述的措施不能解决接口实现的问题,如果接口AIface是在包A中,其实现类AImpl是在包B中,在2中的措施下就不能进行访问,这样就引入了线程上下文加载器。

5、在WEB容器中,如Tomcat,是实现不同的类加载器的,如Tomcat中的类记载器在加载类的时候是首先自己进行加载,如没有做交给父加载器来加载,这样做是为了保证本地的类被有限加载,但是核心类仍然是交给启动加载类来完成的。

6、虚拟机出于安全等因素考虑,不会加载 < Java_Runtime_Home >/lib 存在的陌生类 ,开发者通过将要加载的非 JDK 自身的类放置到此目录下期待启动类加载器加载是不可能的。

7、自定义类加载器时如果不指定父类加载器,则系统加载器是默认的父类加载器。

8、线程上下文加载器实际上就是一个普通的加载器,只不过是这个加载器可以加载该线程上的类,而避免双亲模式中的盲点。

读书人网 >软件架构设计

热点推荐