技术文章 > java >  java基础 > 正文

finalize在java中的清理

小妮浅浅

我们在系统对内存垃圾进行清理前,可以选择一种工具提前做一些清除工作。关于提前做一次清理工作的原因,这里涉及到了GC的问题。在对象可达的情况下,会有对象复活的出现,不然就会被回收。下面我们就finalize的概念、语法、参数、返回值及清理实例带来全面讲解。

1.概念

finalize()主要用于在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。

2.语法

protected void finalize() throws Throwable { }

3.参数

4.返回值

没有返回值

5.实例

public class FinalizeTest {
 
    static  class Person {
        String name;
 
        @Override
        protected void finalize() throws Throwable {
            System.out.println("finalize " + name);
            super.finalize();
        }
    }
 
 
    public static void main(String[] args) {
        Person p = new Person();
        p.name = "ltt";
        p = null;  // 此后,p原先指向的Person对象会在某个时间被 gc 回收掉
 
        System.gc();  // 建议 JVM 进行 gc 操作,但不一定会进行 gc 操作
        System.runFinalization();  // 执行将要被销毁的对象的 finalize 方法
    }
}

运行结果

finalize ltt

为了触发 gc行为,用了下面的代码:

System.gc();  // 建议 JVM 进行 gc 操作,但不一定会进行 gc 操作
System.runFinalization();  // 执行将要被销毁的对象的 finalize 方法

以上就是finalize在java中的清理方法,在我们系统内容将要满时可以使用这种方法,不过这类情况出现的不多,所以finalize使用的次数也比较少。

免费视频教程
本文原创发布python学习网,转载请注明出处,感谢您的尊重!
相关文章
 java中try-catch的使用
 Exeption在java中的分支
 java异常的解决方法
 java finally处理异常
 java中finally不执行的分析
相关视频章节
 网络爬虫
 云端部署Web应用程序视频
 Web应用框架Flask和文件模板
 Web应用程序开发概述
 继承和多态
作者信息
推荐视频
视频教程分类