欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

第二章类加载子系统

时间:2023-07-02
内容结构概述 类的加载过程 Loading-加载

通过一个类的全限定名获取定义此类的二进制字节流将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口linking-链接

验证:确保Class文件的字节流中包含信息符合当前虚拟机要求准备

为类变量(static变量)分配内存并且设置该类变量的默认初始值,即零值不包含用final修饰的static,因为final在编译的时候就会分配好了默认值,准备阶段会显式初始化不会为实例变量分配初始化,实例变量得等到实例化的时候解析:将常量池内的符号引用转换为直接引用的过程

直接引用就是直接指向目标的指针、相对偏移量或一个间接定位到目标的句柄Initialization-初始化

初始化阶段就是执行类构造器方法()的过程

代码中包含static变量,就会有clinit方法()方法中的指令按语句在源文件中出现的顺序执行()不同于类的构造器

构造器是虚拟机视角下的()若该类具有父类,JVM会保证子类的()执行前,父类的()已经执行完毕虚拟机必须保证一个类的()方法在多线程下被同步加锁类加载器的分类

引导类(启动类)加载器(Bootstrap ClassLoader)

获取引导类加载器,值为null自定义类加载器(User-Defined ClassLoader)

Java 将所有派生于抽象类ClassLoader的类加载器都划分为自定义类加载器包含扩展类(Extension ClassLoader)和系统类系统类加载器(Application ClassLoader)

值为sun.misc.Launcher$AppClassLoader@18b4aac2,并且系统类加载器是全局唯一的

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。