欢迎来到我的博客
你好! 这是我第一篇博客,主要介绍一下java类加载器
什么是类加载器?
类加载器就是加载字节码文件(.class)的类。
java语言是一种动态性的解释语言。类(class)只有加载到JVM中才可以运行,当运行指定的程序时,JVM会把编译生成的.class字节码文件按照一定的规则加载到内存中,形成一个完整的java应用程序。这个加载过程就是由类加载器来完成的,具体来说,就是由classLoader和它的子类来实现的。
常见的类加载器(java的类加载机制采用父委派机制)
1.根类加载器(采用c++编写,看不到源码)。
2.扩展类加载器(加载位置:jre/lib/ext)
3.系统加载器(加载位置:classpath下)
4.自定义加载器(必须继承classLoader)
*父委派机制:当有类需要被加载时,会优先调用父类来完成加载工作,父类会使用自己的搜索路径来搜索加载的类,如果搜索不到的话,才会由子类用它的搜索路径来待加载的类。
类加载的方式
1.隐式加载:当程序使用new等方式创建对象时,会隐式的调用类加载器,把对应的类加载到JVM中。
2.显式加载:直接调用class.forName()方法,把所需要的类加载到JVM中。
类加载器的步骤
- 装载。(根据查找路径找到相应的.class文件,然后导入)
- 链接。(链接又分为三个小步骤:1.检查。检查待加载的class文件的正确性。2.准备。给类 中的静态变量分配存储空间。3.解析。将符号引用转换为直接引用)
- 初始化。(给静态变量和静态代码块执行初始化操作)