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-----类加载器的主要内容,如果未能解决你的问题,请参考以下文章