Java清理:终结处理和垃圾回收

21 篇文章 231 订阅 ¥99.90 ¥299.90
Java的垃圾回收器能自动回收new分配的内存,但无法处理特殊情况下的内存清理。通过定义finalize()方法,程序员可以在对象即将被回收前进行必要的清理工作。垃圾回收器在释放对象内存前会先调用此方法,而实际回收则会在下一次GC时执行。只有当程序结束或内存紧张时,未被回收的对象内存才会交还给操作系统。
摘要由CSDN通过智能技术生成

Java有垃圾回收器负责回收无用对象占据的内存资源,但垃圾回收器只知道释放那些经由new分配的内存,假如你的对象(并非使用new)获得一块“特殊”的内存区域,它不知道该如何释放该对象的这块“特殊”内存。为了应对这种情况,Java允许在类中定义一个名为finalize()的方法。

它的工作原理”假定”是这样的:一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用finalize()方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。

所以要是你打算用finalize(),就能在垃圾回收时刻做一些重要的清理工作。

只要程序没有濒临存储空间用完的那一刻,对象占用的空间就总也得不到释放。如果程序执行结束,并且并且垃圾回收器一直都没有释放你创建的任何对象的存储空间,则随着程序的退出,那些资源也会全部交还给操作系统。这个策略是恰当的,因为垃圾回收本身也有开销,要是不使用它,那就不用支付这部分开销了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值