你必须执行清除

为清除一个对象,用户必须在进行清除的时刻调用执行清除动作的方法。听起来似乎很简单,
但却与 C++中的“析构函数”的概念稍有抵触。在 C++中,所有对象都会被销毁,或者说,
“应该”被销毁。如果在 C++中创建了一个局部对象(就是在堆栈上创建,Java 中可不行),
此时的销毁动作发生在以“右花括号”为边界的、此对象作用域的末尾处进行。如果对象是
用 new 创建的(类似于 Java),那么当程序员调用 C++的 delete( )时(Java 没有这个命令),
就会调用相应的析构函数。如果程序员忘了,那么永远不会调用析构函数,就会出现内存泄
露,对象的其他部分也不会得到清除。这种错误很难跟踪,这也是让 C++程序员转向 Java
的一个主要因素。


相反,Java 不允许创建局部对象,你必须使用 new。在 Java 中,也没有“delete”来释放对
象,因为垃圾回收器会帮助你释放存储空间。甚至可以肤浅地认为,正是由于垃圾收集机制
的存在,使得 Java 没有析构函数。然而,随着学习的深入,你就会明白垃圾回收器的存在
并不能完全代替析构函数。(而且你绝对不能直接调用 finalize( ),所以这也不是一个恰当的
途径。)如果你希望进行除释放存储空间之外的清除工作,你还是得明确调用某个恰当的 Java
方法。这就等同于使用析构函数了,而且没有它方便。


记住,无论是“垃圾回收”还是“终结”,都不保证一定会发生。如果 Java 虚拟机(JVM)

并未面临内存耗尽的情形,它是不会浪费时间在回收垃圾以恢复内存上的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值