调用finalize方法

finalize方法是Object类的一个Protected方法。每个对象都有自己的finalize方法,通过super.finalize()方法来调用。如果你写了两个类,类名分别为A和B,在B类中你想调用A类的finalize()方法,A类必须重写Object对象的finalize方法。

[color=green][b]java-(public,private,protected)访问修饰符的 作用域(访问范围)[/b][/color]
[img]http://dl.iteye.com/upload/attachment/453334/c6e59305-247e-33a6-8d77-99ca7b383a25.jpg[/img]

问题:finalize()在什么时候被调用
有三种情况
1.所有对象被Garbage Collection时自动调用,比如运行System.gc()的时候
2.程序退出时为每个对象调用一次finalize方法
3.显式的调用finalize方法

注意:调用System.gc(),只是建议虚拟机进行垃圾回收,但垃圾回收并不一定立即启动。

除此以外,正常情况下,当某个对象被系统收集为无用信息的时候,finalize()将被自动调用,但是jvm不保证finalize()一定被调用,也就是说,finalize()的调用是不确定的,这也就是为什么sun不提倡使用finalize()的原因。你的程序应该提供其他的方法来释放由对象使用的系统资源,而不能依靠finalize()来完成程序的正常操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值