前言
我们每天都在写Java代码,最常见的User.java这种文件,但是这种文件是如何被虚拟机识别的呢,你有没有思考过这个过程
首先我们写的Java文件会被编译成class文件,因为机器不认识getName这种,机器只认识010101
编译完成的class文件会被加载到虚拟机中,用于完成我们的任务,那这个加载是什么时候开始呢,加载的过程是什么样子的呢
类加载时机
先来肝个图,类的加载过程
类从被加载到虚拟机开始,到卸载出内存为止,它的整个的生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段
而验证、准备、解析三个阶段被统称为连接阶段
类的加载时机,也就是类是在何时开始加载这一过程的呢
这一点虚拟机并没有明确规范,虚拟机可以自由实现,但是对于其中有一个步骤叫做初始化,虚拟机规范则是严格规定了有且只有5种情况立即对类进行初始化,而在此之前的过程也需要提前开始
- 遇到new、getstatic、putstatic或者invokestatic这四