Java- 对象清楚与垃圾回收

对象的自动清除

  • 也叫垃圾回收(garbage collection)
  • 对象回收是由Java虚拟机的垃圾回收线程来完成的。
  • 系统如何判断一个对象是否为垃圾?
    • 任何对象都有一个引用计数器,当其值为0时,说明该对象可以回收。

System.gc()方法

  • 它是System类的static方法
  • 它可以要求系统进行垃圾回收,但仅仅只是“建议”,即不能强制系统进行垃圾回收。

finalize()方法

  • Java中没有“析构方法(destructor)”,但Object的finalize()有类似的功能
    • 系统在回收时会自动调用对象的finalize()方法
    • protected void finalize() throws Throwable{}
    • 该方法其实很少用到,因为垃圾回收是自动自行的。
  • 子类的finalize()方法
    • 可以在子类的finalize()方法释放系统资源
    • 一般来说,子类的finalize()方法中应该调用父类的finalize()方法,以保证父类的清理工作能够正常进行。

try-with-resources

  • 由于finalize()方法的调用时机并不确定,所以一般不用finalize()方法
  • 关闭打开的文件、清除一些非内存资源等工作需要进行处理,可以使用try-with-resources语句(JDK1.7以上),要求可以实现java.lang.AutoCloseable的对象
  • 例如:
try(Scanner scanner = new Scanner(...)){
    ...
}

会自动调用其close()方法,相当于

finally{
    Scanner.close();
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值