'深入理解Java虚拟机'2018-04-18

Java代码编译时期是将Java文件编译为Class文件。
Java代码执行时期:

装载

  • JVM通过类的全限定名获取描述此类的.class文件,通过该文件将类的信息加载到JVM方法区,然后在堆中实例化一个java.lang.Class对象,作为方法区中这个类的入口。

连接

  • 验证,确认类型符合Java语言的语义,并且不会危及JVM的完整性
  • 准备,为类变量(Static变量)分配内存,设置初值(通过内存清零实现,此阶段不执行Java代码),final修饰的常量初始值就是Java代码中的初始值
  • 解析,在类的常量池中寻找类,接口,方法和字段的符号引用,将符号引用替换为直接引用

初始化

  • 为类变量赋予Java代码中的初始值

对象生命

类可以被使用了。调用类变量,类方法,实例化类等。实例化类会创建一个新的对象,开启该对象的生命周期。对象生命周期:

  • 对象实例化,在堆中为对象分配内存,清零,赋予正确的初始值
  • 垃圾收集,当对象不再被引用的时候
  • 对象终结,被垃圾收集后

类卸载

  • 将类的内存空间清空
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容