类加载器:ClassLoader
Posted zzfan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类加载器:ClassLoader相关的知识,希望对你有一定的参考价值。
加载流程
当运行一个程序时,JVM启动
- 运行 bootstrap classloader,该ClassLoader加载Java核心API(ExtClassLoader和AppClassLoader也在此时加载)
- 调用ExtClassLoader加载扩展API
- APPClassLoader加载CLASSPATH目录下定义的Class
一些重要的方法
- loadClass方法,定义如下:
name:JVM需要的类的名称
resolve:方法是否需要解析类
- forName方法
该方法调用Class.forName(name,initialize,loader);
也就是等同于
initialize:设置加载类的时候是否连接该类
连接分为三步:
- 验证class是否符合规格
- 为类变量分配内存的同时设置默认初始值
- 解释,这一步是可选的,是否解释由loadClass方法的第二个参数来判断。这里的解释是指根据勒种的符号引用查找相应的实体,再把符号应用替换成一个直接引用的过程。
两个方法的区别:
ClassLoader.loadClass()不会初始化该类,而Class.forName()加载类时会进行初始化
以上是关于类加载器:ClassLoader的主要内容,如果未能解决你的问题,请参考以下文章