JVM运行原理:
Class的加载
过程:加载—验证—准备—解析—初始化—执行—卸载
加载:class文件(二进制字节流)被类加载器加载到内存中,将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构,在内存中生成一个代表这个类的java.lang.Class对象,这个对象可能在堆中,也可以在方法区中(HotSpot是放在方法区中的)。
验证:验证是否为class文件(CAFEBABE),验证版本号,验证这个类是否有未实现的方法,重载是否正确,是否覆盖了final方法……验证数据类型、常量池……
准备:为类变量(static)分配内存并设置初始值(0,false,”,null等),类变量都是分配在方法区中的。
解析:将常量池中的符号引用替换成直接饮用。
初始化:执行类构造器