Java9中finalize()方法在垃圾回收中的具体工作原理是怎样的?

2026-05-28 12:440阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1039个文字,预计阅读时间需要5分钟。

Java9中finalize()方法在垃圾回收中的具体工作原理是怎样的?

1: finalize() 方法是Object类的默认方法,用于在类被垃圾回收器回收前执行一些清理操作。但是JVM不能保证finalize()方法一定会被执行,其执行时机不确定。

1: finalize() 方法

finallize() 方法是Object类的方法, 用于在类被GC回收时 做一些处理操作, 但是JVM并不能保证finalize(0 ) 方法一定被执行,
由于finalize()方法的调用时机具有不确定性,从一个对象变得不可到达开始,到finalize()方法被执行,所花费的时间这段时间是任意长的。我们并不能依赖finalize()方法能及时的回收占用的资源,可能出现的情况是在我们耗尽资源之前,gc却仍未触发,因而通常的做法是提供显示的close()方法供客户端手动调用
所以一般不建议使用finalize 方法, JDK9 开始已久被废除

总结缺点

1: finalize机制本身就是存在问题的。

2:finalize机制可能会导致性能问题,死锁和线程挂起。

3:finalize中的错误可能导致内存泄漏;如果不在需要时,也没有办法取消垃圾回收;并且没有指定不同执行finalize对象的执行顺序。此外,没有办法保证finlize的执行时间。

阅读全文

本文共计1039个文字,预计阅读时间需要5分钟。

Java9中finalize()方法在垃圾回收中的具体工作原理是怎样的?

1: finalize() 方法是Object类的默认方法,用于在类被垃圾回收器回收前执行一些清理操作。但是JVM不能保证finalize()方法一定会被执行,其执行时机不确定。

1: finalize() 方法

finallize() 方法是Object类的方法, 用于在类被GC回收时 做一些处理操作, 但是JVM并不能保证finalize(0 ) 方法一定被执行,
由于finalize()方法的调用时机具有不确定性,从一个对象变得不可到达开始,到finalize()方法被执行,所花费的时间这段时间是任意长的。我们并不能依赖finalize()方法能及时的回收占用的资源,可能出现的情况是在我们耗尽资源之前,gc却仍未触发,因而通常的做法是提供显示的close()方法供客户端手动调用
所以一般不建议使用finalize 方法, JDK9 开始已久被废除

总结缺点

1: finalize机制本身就是存在问题的。

2:finalize机制可能会导致性能问题,死锁和线程挂起。

3:finalize中的错误可能导致内存泄漏;如果不在需要时,也没有办法取消垃圾回收;并且没有指定不同执行finalize对象的执行顺序。此外,没有办法保证finlize的执行时间。

阅读全文