ClassLoader与类的加载

来源:互联网 发布:天下霸图2 优化 编辑:程序博客网 时间:2024/05/29 15:52

ClassLoader 是JAVA不易发现的知识点,在JVM需要某类时,它根据名称向ClassLoader要求这个类,然后由ClassLoader返回这个类的class对象。

Java程序并不是一个可执行文件,而是由许多独立类文件组成,每一个文件对应一个Java类。此外,这些类并非开始时全部装入内存,而是动态调入内存,即根据程序需要时加载。ClassLoader是JVM实现这个功能的主要部分。ClassLoader主要包括bootstrap classloader,ClassLoader在JVM运行时加载的Java API。

用户定义的ClassLoader主要有ExtClassLoader,AppClassLoader。ExtClassLoader作用是加载java扩展API,即/lib/ext中的类。AppClassLoader用来加载CLASSPATH设置目录中的Class,一般情况下程序员自定义类由这个ClassLoader加载。(ClassLoader不止一种,AppClassLoader最常见)

ClassLoader加载流程

运行Java程序时,JVM启动,运行bootstrap classloader,该classloader加载java核心API(也加载ExtClassLoader,AppClassLoader)然后调用ExtClassLoader加载扩展API,最后AppClassLoader加载CLASSPATH目录下定义的Class。


一个类加载使用父类委托模式。

1、可以避免重复加载,父类已加载该类的时候,子类ClassLoader不必再次加载。

2、安全因素。避免用户自定义string动态替代java核心API中定义的类型。

0 0
原创粉丝点击