类加载器-类加载的过程
类加载器 java->class文件(编译后的字节码文件),负责将class文件加载进内存中
1.类在什么时候会被加载到内存中?
- 触感见类的实例(对象)
- 掉用类的类方法(静态方法)
- 访问类活着呢接口的类变量,或者为该类变量赋值(静态变量)
- 使用反射的方式来强制创建某个类或接口对应的java.lang.Class对象
- 初始化某个类的子类(子类依赖父类)
- 直接试用java.exe命令来运行某个主类
用到就加载,不用不加载
2.类加载过程
-
-
加载
- 通过包名 + 类名,获取这个类,准备用流进行传输
- 在这个类加载到内存中
- 加载完毕创建一个class对象
2. 链接-
验证
确保Class文件字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机自身安全
(文件中的信息是否符合虚拟机规范有没有安全隐患)
-
准备
负责为类的类变量(被static修饰的变量)分配内存,并设置默认初始化值
(初始化静态变量)
-
-
解析
将类的二进制数据流中的符号引用替换为直接引用
(本类中如果用到了其他类,此时就需要找到对应的类)
-
初始化
根据程序员通过程序制定的主观计划去初始化类变量和其他资源
(静态变量赋值以及初始化其他资源)
-
小结
- 当一个类被使用的时候,才会加载到内存
- 类加载的过程: 加载、验证、准备、解析、初始化