》》在使用对象时,最关键的问题之一便是它们的生成和销毁方式。每个对象
为了生存都需要资源,尤其是内存。当我们不再需要一个对象时,它必须被
清理掉,使其占有的资源可以被释放和重用。
》》怎样才能知道何时销毁对象呢?在必须明确删除对象的编程系统中,此问题
变得十分复杂。
》》在被称为堆(heap)的内存池中动态地创建对象。这种方式中,直到运行时
才知道需要多少对象,它们的生命周期如何,以及它们的具体类型是什么。这
些问题的答案只能在程序运行时相关代码被执行到的那一刻才能确定。
》》Java 完全采用了动态内存分配方式。每当想要创建新对象时,就要使用 new
关键字来构建此对象的动态实例。
》》对于允许在堆栈上创建对象的语言,编译器可以确定对象存活的时间,并可以
自动销毁它。然而,在如果是在堆上创建对象,编译器就会对它的生命周期一无
所知。
》》Java 提供了被称为“垃圾回收器”的机制,它可以自动发现对象何时不再被使用,
并继而销毁它。
》》Java 的垃圾回收器被设计用来处理内存释放问题(尽管它不包括清理对象的其他
方面)。垃圾将回收器“知道”对象何时不再被使用,并自动释放对象占用的内存。这
一点同所有对象都是继承自单根基类 Object 以及只能以一种方式创建对象(在堆上
创建)这两个特性结合起来。