'深入理解Java虚拟机'2018-04-18
2018-04-18 本文已影响0人
lichao666
Java代码编译时期是将Java文件编译为Class文件。
Java代码执行时期:
装载
- JVM通过类的全限定名获取描述此类的.class文件,通过该文件将类的信息加载到JVM方法区,然后在堆中实例化一个java.lang.Class对象,作为方法区中这个类的入口。
连接
- 验证,确认类型符合Java语言的语义,并且不会危及JVM的完整性
- 准备,为类变量(Static变量)分配内存,设置初值(通过内存清零实现,此阶段不执行Java代码),final修饰的常量初始值就是Java代码中的初始值
- 解析,在类的常量池中寻找类,接口,方法和字段的符号引用,将符号引用替换为直接引用
初始化
- 为类变量赋予Java代码中的初始值
对象生命
类可以被使用了。调用类变量,类方法,实例化类等。实例化类会创建一个新的对象,开启该对象的生命周期。对象生命周期:
- 对象实例化,在堆中为对象分配内存,清零,赋予正确的初始值
- 垃圾收集,当对象不再被引用的时候
- 对象终结,被垃圾收集后
类卸载
- 将类的内存空间清空