对象的清除

本文详细介绍了Java中对象的清除过程,包括手动管理内存和自动垃圾回收机制。特别强调了finalize()方法的作用,以及如何在垃圾收集器中清理对象。通过示例展示了如何在对象销毁前执行必要的清理工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


对象使用完之后需要对其进行清除。对象的清除是指释放对象占用的内存。在创建对象时,用户必须使用new操作符为对象分配内存。不过,在清除对象时,由系统自动进行内存回收,不需要用户额外处理。这也是Java语言的一大特色,某种程度上方便了程序员对内存的管理。

Java语言的内存自动回收称为垃圾回收(Garbage Collection)机制,简称GC。垃圾回收机制是指JVM用于释放那些不再使用的对象所占用的内存。Java语言并不要求JVM有GC,也没有规定GC如何工作。不过常用的JVM都有GC,而且大多数GC都使用类似的算法管理内存和执行收集操作。具体的垃圾收集实现策略有好多种,在此不再赘述。

Java语言允许用户使用finalize()方法在垃圾收集器中将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对它进行调用的。其是在Object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

【示例4-10】一般实现finalize()方法的代码如下所示。

 
  1. protected void finalize() throws throwable {  
  2.     ...//释放占用的相关资源  
  3.     super.finalize();  
分析:finalize()是位于Object类的一个方法,该方法的访问修饰符为protected。由于所有类为Object的子类,因此用户类很容易访问到这个方法。由于finalize函数没有自动实现链式调用,我们必须手动地实现。因此finalize函数的最后一个语句通常是super.finalize()。super的概念在后续章节介绍。通过这种方式,可以实现从下到上实现finalize的调用。即先释放自己的资源,然后再释放父类的资源。


转载地址:http://book.51cto.com/art/200909/154786.htm

                   http://book.51cto.com/art/200909/154772.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值