类的加载过程
如果JVM想要执行这个.class文件,需要将其装载进一个类加载器中,类加载器就像搬运工,会将所有的.class文件搬进JVM里面
重点知识:
- Java文件经过编译变成.class字节码文件
- 字节码文件通过类加载器搬运到JVM虚拟机中
- 虚拟机分为5大块:方法区、堆为线程共享区域,有线程安全问题;栈、本地方法栈、计数器都是独享区域,不存在线程安全问题。优化JVM主要围绕堆、栈两块进行。
类加载流程
类的加载过程包括了加载、验证、准备、解析、初始化、五个阶段。其中加载、验证、准备、初始化这四个阶段发生的顺序是确定的,而解析阶段不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Java语言的运行时绑定(也成为动态绑定或者晚期绑定)。另外注意这里的几个阶段是按顺序开始的,而不是按顺序进行或者完成的,因为这些阶段通常都是相互交叉的混合进行的,通常在一个阶段激活或者调用另一个阶段。
- 加载:查找并加载类的二进制数据,在java堆中也创建一个java.lang.Class类的对象
- 验证:文件格式、元数据、字节码、符号引用验证
- 准备:为类的静态变量分配内存,并将其初始化为默认值
- 解析:把类中的符号引用转换为直接引用
- 初始化:为类的静态变量赋予正确的初始值
- 使用:new出对象程序中使用
- 卸载:执行垃圾回收
(未完结)
文章摘自https://mp.weixin.qq.com/s/nSwNZpObWLGteG-v7n5PSw