类加载器主要负责将.class文件加载到内存中,并为值生成对应的java.lang.Class对象。尽管在Java开发红程序员无须过分关心类加载机制,但应该了解其工作机制。
一旦一个类被载入JVM中,同一个类就不会被再次载入了,载入JVM的类有一个唯一的标识,在Java中,一个类用其全限定类名(包括包名和类名)作为标识。
但在JVM中,一个类用其全限定类买那个和其类的加载器作为唯一的标识。
类加载机制:
(1)全盘负责:所谓全盘负责,就是说当一个类加载器负责加载某个Class的时候,该Class所依赖的和引用的其他Class也将由该类加载器负责载入,除非显示的使用其他类加载器。
(2)父类委托:所谓父类委托则是先让parent类加载器试图加载该Class,只有在父类加载器无法加载个该类时才尝试使用自己的类路径加载该类。
(3)缓存机制:缓存机制将会保证所有被加载过的Class都会被缓存,当程序中需要使用某个Calss时,类加载器先从缓存中搜索该Class,只有当缓存中不存在该Class对象时,系统才会从新读取该类对应的二进制数据,并将其转换为Class对象,并存入缓存中。这就是为什么我们修改了Class后,程序必须重新启动JVM,程序所作的修改才会生效的原因。
个人总结,希望对你有所帮助。
|