对象的生命周期没有大家想的那么复杂。其实其就是回答了两个简单的问题。什么时候需要创建对象? 什么时候把对象消亡?这两个问题解决了,那么对象的生命周期问题也就解决了。
一、传统的对象生命周期管理方法。
为了对Java开发平台中的生命周期管理方法有一个更加深刻的理解,笔者认为大家需要对传统的生命 周期管理方法先有一个了解。因为这有助于大家有一个相互的对比,从而会对Java语言中的生命周期管理 方法会有一个比较直观的印象。
在传统的编程语言中,如C语言,其考虑对象的生命周期,主要是从对象与应用程序的执行效率出发的 。为了追求应用程序最大的执行效率,C语言要求在编写应用程序的时候程序开发人员必须确定对象的存 储空间与生命周期,既可以通过堆饯或者限域变量来实现。这么设计的话,好处是很明显的。由于在程序 开发的时候就涉及好了对象的存储空间与生命周期,那么在程序运行的时候就不需要再花精力去创建对象 。应用程序开发人员需要知道的是,在堆栈中创建与释放对象的存储空间是一件很容易且不用花费多少时 间的事情。如在堆栈中创建对象空间只需要一条将栈顶指针向下移动的汇编指令,另一条汇编指令对应释 放存储空间所需的将栈顶指针往上移动即可。所以应用程序的执行速度就会比较高,可以将对象存储空间 的分配和释放置于比较有限考虑的地位。
但是这种管理方法的最大缺陷就是灵活性不高。因为在应用程序开发的时候就必须要知道对象的确切 数量、生命周期和存储空间。如果后续需要对应用程序进行二次开发或者功能升级,如果涉及到添加新对 象的话,那么修改的工作量就会很大。而且对于普通的应用程序开发人员来说,很难对所需要的对象的数 量与生命周期,做出一个准确的预计。可见,这种管理方式虽然可以保证应用程序的最大运行速度,但是 其局限性也是蛮大的。其不仅灵活性不高,而且对于应用程序开发者有更高的要求。
二、Java平台下的对象生命周期管理方法。
在Java语言平台下,其与传统的对象管理方法有很大的不同。在Java语言平台下,叫做动态创建对象 。简单地说,就是不是在应用程序开发的时候创建对象,而是在应用程序运行的过程中动态的根据需要建 立对象。与上面的对象生命周期不同,动态的创建对象,只在应用程序运行的时候才会考虑需要创建多少 对象,他们的生命周期有多久,对象的类型是什么等等。这些问题只有在应用程序代码被执行的那一刻才 能够最终的确定下来。在应用程序开发的过程中不需要关注这些问题。如在Java语言开发中,一开始不需 要建立对象。在需要对象的时候,可以利用new关键字来创建一个对象。
很明显,由于对象的创建与消亡都是在应用程序运行的时候动态管理的,为此其灵活性要比传统的静 态管理方式要高。当需要新的对象相时,只需要在代码中利用NEW关键字创建一个即可,而不需要对其他 的内容进行更改。为此,象Java这种采用动态机制来管理对象生命周期的语言,往往被认为其在升级、二 次开发上面都比传统的C语言程序要高。而且由于在需要的时候创建对象,为此对于应用程序开发者的要 求也相对比较低一点。应用程序开发人员进入Java语言的门槛也会低许多。