java-----类加载器

Posted 小鹿可可乐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java-----类加载器相关的知识,希望对你有一定的参考价值。


Java 虚拟机一般使用 Java 类的流程:首先将开发者编写的 Java 源代码(.java 文件)编译生成 Java 字节码文件 (.class 文件)存储在磁盘上,然后类加载器会读取字节码文件,并转换成 java.lang.Class 对象。有了该 Class 对象后,Java 虚拟机 可以利用反射方法创建其真正的对象了。
编译期:语法,语义解析
查看当前字节码结构:javap -verbose TestDemo

1.类加载器分类

JDK 提供的三种类加载器,分别是 Bootstrap ClassLoader(启动类加载器),ExtClassLoader(扩展类加 载器),AppClassLoader(应用类加载器),继承关系

1.1 Bootstrap classLoader(启动类加载器)

(顶级类加载器) null C/C++实现
jir/lib/*.jar

1.2 Extension ClassLoader(扩展类加 载器)

jre/lib/ext/*.jar

1.3 Application ClassLoader(应用类加载器)

ClassPath(用户自定义路径)

1.4 查看类加载器

public static void main(String[] args)
{
 Class<?> c = null;
 c=SingleLink.class;
 System,out,println(c.getClassLoader())
 
}

2.双亲委派模型

3.类加载过程

3.1类加载时机

1.People p = new People();
2.类.静态成员 Arrays.copyOf();
3.main所在的类
4.反射

3.2 阶段

第一大阶段:加载(装载)阶段 类加载器
产物:生成当前类Class对象
第二大阶段:链接阶段
验证:魔数验证(.class),版本号验证
准备:给静态变量开辟内存,并赋类型默认值
解析:符号引用转换为直接引用
第三大阶段:初始化阶段
给静态变量赋值操作
静态块

以上是关于java-----类加载器的主要内容,如果未能解决你的问题,请参考以下文章

深入理解Java类加载器

java类加载器,getClassLoader()

java类加载器,getClassLoader()

Java类加载器

java类加载器_01

java-----类加载器