Java垃圾回收机制的finalize方法实例分析

 更新时间:2019年08月02日 08:47:26   作者:cakincqm  
这篇文章主要介绍了Java垃圾回收机制的finalize方法,结合实例形式分析了finalize方法的特点及在垃圾回收机制中的相关操作技巧,需要的朋友可以参考下

本文实例讲述了Java垃圾回收机制的finalize方法。分享给大家供大家参考,具体如下:

一 点睛

finalize方法有如下四个特点:

  • 永远不要主动调用某个对象的finalize方法,该方法应交给垃圾回收机制调用。
  • finalize方法的何时被调用,是否被调用具有不确定性。不要把finalize方法当成一定会被执行的方法。
  • 当JVM执行可恢复对象的finalize方法时,可能使该对象或系统中其他对象重新变成可达状态。
  • 当JVM执行finalize方法时出现了异常,垃圾回收机制不会报告异常,程序继续执行。

由于finalize()方法并不一定会被执行,因此如果想清理某个类里打开的资源,则不要放在finali()方法中进行清理。

二 实战——复活自身

1 代码

public class FinalizeTest
{
  private static FinalizeTest ft = null;
  public void info()
  {
   System.out.println("测试资源清理的finalize方法");
  }
  public static void main(String[] args) throws Exception
  {
   // 创建FinalizeTest对象立即进入可恢复状态
   new FinalizeTest();
   // 通知系统进行资源回收
   System.gc(); //A 处
   // 强制垃圾回收机制调用可恢复对象的finalize()方法
//  Runtime.getRuntime().runFinalization();  //B处
   System.runFinalization();  //C处
   ft.info();
  }
  public void finalize()
  {
   // 让tf引用到试图回收的可恢复对象,即可恢复对象重新变成可达
   ft = this;
  }
}

2 运行

测试资源清理的finalize方法

3 说明

A处和C处的代码必须都执行,否则因为垃圾回收的不确定性,finalize不会被执行,导致程序最终异常执行。

更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

相关文章

  • Spring Security常用过滤器实例解析

    Spring Security常用过滤器实例解析

    这篇文章主要介绍了Spring Security常用过滤器实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • java并发编程之原子性、可见性、有序性

    java并发编程之原子性、可见性、有序性

    这篇文章主要给大家分享的是java并发编程的原子性、可见性和有序性,文章会具体举例说明,感兴趣的小伙伴可以参考一下文章的具体内容
    2021-09-09
  • Java使用阻塞队列控制线程通信的方法实例详解

    Java使用阻塞队列控制线程通信的方法实例详解

    这篇文章主要介绍了Java使用阻塞队列控制线程通信的方法,结合实例形式详细分析了java使用阻塞队列控制线程通信的相关原理、方法及操作注意事项,需要的朋友可以参考下
    2019-09-09
  • Thread线程的基础知识及常见疑惑点总结

    Thread线程的基础知识及常见疑惑点总结

    在本篇内容里小编给大家分享的是关于Thread线程的基础知识及常见疑惑点,对此有学习需求的朋友们可以学习参考下。
    2019-05-05
  • MyBatis的MapKey注解实例解析

    MyBatis的MapKey注解实例解析

    这篇文章主要为大家介绍了MyBatis的MapKey注解实例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Java中Date和LocalDate区别与介绍

    Java中Date和LocalDate区别与介绍

    本文主要介绍了Java中Date和LocalDate区别与介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • java实现十六进制字符unicode与中英文转换示例

    java实现十六进制字符unicode与中英文转换示例

    当需要对一个unicode十六进制字符串进行编码时,首先做的应该是确认字符集编码格式,在无法快速获知的情况下,通过一下的str4all方法可以达到这一目的
    2014-02-02
  • spring boot项目没有mainClass如何实现打包运行

    spring boot项目没有mainClass如何实现打包运行

    这篇文章主要介绍了spring boot项目没有mainClass如何实现打包运行,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • java shiro实现退出登陆清空缓存

    java shiro实现退出登陆清空缓存

    本篇文章主要介绍了java shiro实现退出登陆清空缓存,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Java I/O流实例之简历替换

    Java I/O流实例之简历替换

    流是一种抽象概念,它代表了数据的无结构化传递。。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出
    2021-09-09

最新评论