垃圾回收finalize/GC


什么时候进行垃圾回收

垃圾回收是在内存中存在没有引用的对象或超过作用域的对象时进行的

Java中垃圾回收有什么目的

垃圾回收的目的是识别并且丢弃应用不再使用的对象来释放和重用资源

如果对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存

不会,在下一个垃圾回调周期中,这个对象将是被可回收的
也就是说并不会立即被垃圾收集器立刻回收,而是在下一次垃圾回收时才会释放其占用的内存

finalize()方法什么时候被调用

  • 垃圾回收器(garbage colector)决定回收某对象时,就会运行该对象的finalize()方法;
    finalize是Object类的一个方法,该方法在Object类中的声明protected void finalize() throws Throwable { } 在垃圾回收器执行时会调用被回收对象的finalize()方法,可以覆盖此方法来实现对其资源的回收。注意:一旦垃圾回收器准备释放对象占用的内存,将首先调用该对象的finalize()方法,并且下一次垃圾回收动作发生时,才真正回收对象占用的内存空间
  • GC本来就是内存回收了,应用还需要在finalization做什么呢? 答案是大部分时候,什么都
    不用做(也就是不需要重载)
    。只有在某些很特殊的情况下,比如你调用了一些native的方法
    (一般是C写的),可以要在finaliztion里去调用C的释放函数。

析构函数(finalization)的目的是什么

  • Finalizetion主要用来释放被对象占用的资源(不是指内存,而是指其他资源,比如文件(File
    Handle)、端口(ports)、数据库连接(DB Connection)等)
    然而,它不能真正有效地工作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值