我是靠谱客的博主 称心超短裙,最近开发中收集的这篇文章主要介绍使用finalize()方法让对象进行自救,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

demo代码:

import java.util.concurrent.TimeUnit;

public class ObjectHelpSelf {
    private static ObjectHelpSelf objectHelpSelf = null;

    @Override
    protected void finalize() throws Throwable {
        System.out.println("进入finalize方法中,对象开始自救");
        //重新赋值
        ObjectHelpSelf.objectHelpSelf = this;
    }

    public static void main(String[] args) throws InterruptedException {
        objectHelpSelf = new ObjectHelpSelf();
        objectHelpSelf = null;
        System.gc();
        //finalize方法的优先级很低,所以睡眠一秒,方便看到效果
        TimeUnit.SECONDS.sleep(1);
        System.out.println("第一次gc后,objectHelpSelf=" + objectHelpSelf);
        objectHelpSelf = null;
        System.gc();
        //finalize方法的优先级很低,所以睡眠一秒,方便看到效果
        TimeUnit.SECONDS.sleep(1);
        System.out.println("第二次gc后,objectHelpSelf=" + objectHelpSelf);
    }
}

运行结果如下:

总结

可以发现使用了finalize()方法,在第一次的gc时,ObjectHelpSelf对象没有被回收,自救成功,而第二次gc时,ObjectHelpSelf对象为null,说明对象被回收了,这是因为任何一个对象的finalize()方法最多只会被系统自动调用一次,不然每次gc,对象都自救,那对象就永远会存在,造成类似内存溢出的效果了。同时该方法不建议使用,仅做了解即可。

最后

以上就是称心超短裙为你收集整理的使用finalize()方法让对象进行自救的全部内容,希望文章能够帮你解决使用finalize()方法让对象进行自救所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部