反射
虚拟机中类的加载机制
1.1.1类加载概述
虚拟机的类加载机制:虚拟机把描述类的数据从class文件放入内存,并对其数据进行校验,解析,分析和初始化,最后形成能够被java虚拟机直接调用的java类型 。
1.1.2.类加载过程
当程序要使用某个类时,如果该类还未被加载到内存中,系统会通过加载、连接、初始化三步来实现对这个类的加载。
加载:
1.将class文件读入内存,并建立一个Class对象
2.任何类被使用是系统都会建立一个Class对象。
连接:
1.验证是否有正确的内部结构,其他类协调一致。
2.准备负责为类的静态成员分配内存,并设置默认初始值。
3.解析将类的二进制数据中的符号引用替换为直接引用。
初始化:
1.主要对类的变量进行初始化
2.如该类还有直接弗雷,则先初始化其直接父类
3.有初始化语句,按顺序执行
1.1.3类的初始化时机
当使用这个类型时JVM虚拟机就会开始对这个类型进行加载和初始化
- 创建类的实例(对象)
- 类的静态成员使用
- 类的静态方法调用
- 使用反射方式来强制创建某个类或者接口对应的java.lang.Class对象
- 初始化某个类的子类
- 直接使用java.exe命令来运行某个主类