finalize方法的作用

本文详细介绍了Java中对象回收前的finalize方法的工作原理。当对象不可达时,finalize方法提供了最后一次自救的机会,允许对象做一些清理工作,如释放资源等。文章还解释了对象如何被标记及如何执行finalize方法的过程。

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

        finalize是在对象回收前做一些清扫工作,以及可清理栈上的内存,比如调用本地方法可能在栈上创建对象。即使对象不可达,也并不是非死不可,还是可以抢救一下,当一个对象没有与GCroot相连的引用链时,它将被第一次标记,然后判断对象是否有必要执行finalize()方法。当对象没有覆盖finalize()方法(没有就没法抢救了),或者finalize()方法已经被虚拟机调用过,则不必执行,如果有必要执行,该对象就会被放到一个叫做F-Queue的队列里,并且由一个低优先级的Finalizer线程去执行它。但是不保证会等待方法执行结束。finalize方法是对象逃脱的最后机会,稍后GC会对F-Queue中的对象进行二次标记,只要对象重新链接上了引用链,它就会被移出即将回收的集合。。

转载于:https://www.cnblogs.com/akaneblog/p/6783707.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值