在JVM运行空间中,对象的整个生命周期大致可以分为七个阶段:创建阶段(Creation)、应用阶段(Using)、不可视阶段(Invisible)、不可到达阶段(
Unreachable)、可收集阶段(Collected)、终结阶段(Finalized)、释放阶段(Free)。经过上述的七个阶段,构成了JVM中对象的完整的生命周期。下面分别介绍对象在处于这七个阶段的不同情形。
创建阶段
对象在创建阶段,系统要经过一下的步骤,完成对象的创建过程:
(1)、为对象分配存储空间
(2)、开始构建对象
(3)、递归调用其父类的构造器
(4)、惊醒对象实例初始化与变量初始化
(5)、执行构造方法体
上面五个步骤中的第三步就是递归的调用该类所扩展的所有父类的构造方法,一个java类(除Object类外)至少有一个父类,这个规则即是强制的,又是隐私的,你可能已经注意到,在创建一个java类的时候,并没有显式的扩展一个Object父类,实际上,在java程序设计中,任何一个java类都直接或者间接的是Object的子类。
上面介绍了对象处于创建阶段的时候,系统所做的一些处理工作,其中有些性能和应用的性能密切相关,因此在创建对象是我们应该遵循一些规则,以提高应用的性能。
下面试在创建对象时候的几个关键的应用规则:
(1)、避免在循环体中创建对象,即使该对象占用的内存空间不大。
(2)、尽量及时使对象符合垃圾回收标准。
(3)、不要采用太深的继承体制。
(4)、访问本地变量优于访问类中的变量。
看来在程序设计中也应该遵从“勿以恶小而为之”的古训,否则我们开发出来的应用也是低效的应用,有时应用软件中的一个极小的失误,就会大幅度地降低整个系统的性能。因此,我们在日常的应用开发中,应该认真对待每一行代码,采用最优化的编写方式,不要忽视细节,不要忽视潜在的问题