本来打算坚持每天一更的。中间有一天断了,这一断就是 2 周。 真的是可怕!!! 谨记,谨记。。。
什么是虚拟机的类加载机制?
虚拟机把描述class信息的文件加载到内存,效验,转化解析,初始化,将形成可以被虚拟机解析的java 类型。
动态加载和动态连接
指的是,java虚拟加相对与编译时需要连接的语言来说,java的烈性加载,连接,和初始化过程都是程序运行期间完成的。
类加载机制。
加载 ==》 连接 (验证 准备 解析)==》 初始化 ==》调用==》 卸载。
其中 解析的过程不一定是在 按顺序进行的。
主动引用。
【1】当字节码 遇到new getstatic putstatic invokestatic。
【2】 反射reflect的时候
【3】 初始化一个类,父类还没有初始化。
【4】虚拟机启动时,启动的那个主类。比如main。
被动引用。
【1】子类去调用父类的的静态字段,不会触发初始化。
【2】使用数组不会触发初始化。
什么是加载。
虚拟机做3件事。
【1】 通过类的全限定名 来获取一个二进制流。
【2】将流的静态存储结构转换成方法区的运行时数据结构。
【3】 在内存中生成一个 代表这个类的 class对象。作为方法区这个类的个个数据的入口。
强调 一下。 数组 不会触发加载,直接在虚拟机上创建。