确保正确清除

每个对象为了生存都需要资源,尤其是内存。当我们不再一个对象时,它必须被清除掉使其
占有的资源可以被释放和重用。在相对简单的编程情况下,怎样清除对象看起来似乎不是什
么挑战:你创建了对象,根据需要使用它,然后它应该被销毁。然而,你很可能会遇到相对
复杂的情况。


例如,假设你正在为某个机场设计空中交通管理系统(同样的模型在仓库货柜管理系统、录
像带出租系统或是宠物寄宿店也适用)。一开始问题似乎很简单:创建一个容器来保存所有
的飞机,然后为每一架进入控制交通控制区域的飞机创建一个新的飞机对象,并将其置于容
器中。对于清除工作,只需在飞机离开此区域时删除相关的飞机对象即可。


但是,可能还另有某个系统记录着有关飞机的数据,也许这些数据不需要像主要的控制功能
那样立刻受到人们的注意。例如,它可能记录着所有飞离飞机场的小型飞机的飞行计划。因
此你需要有第二个容器用来存放小型飞机,无论何时,只要创建的是小型飞机对象,那么它
同时也应该置入第二个容器内。然后某个后台进程在空闲时间对第二个容器内的对象执行操
作。


现在问题变得更困难了:你怎样才能知道何时销毁这些对象呢?当你处理完某个对象之后,
系统其他的某部分可能正在处理它。在其他许多场合中也会遇到同样的问题,在必须明确删
除对象的编程系统中(例如 C++),此问题会变得十分复杂。


Java 的垃圾回收器被设计用来处理内存释放问题(尽管它不包括清除对象的其他方面)。垃
圾回收器“知道”对象何时不再被使用,并自动释放该对象的内存。这与所有对象都是继承
自单根基类 Object,以及你只能以一种方式创建对象——在堆上创建这两个特性一起,使得

用 Java 编程的过程较之用 C++编程要简单得多,你要做的决策和要克服的障碍都要少得多。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值