Java中finalize方法_MrYuShiwen的博客-程序员秘密

技术标签: java  # Java初级基础  finalize  

前沿:在面试过程中我们可能会被问到final、finally、finalize的区别?本篇文章将介绍finalize的简单用法。

  • Finalize()是Object类的方法。
  • 在GC准备释放对象所占用的内存空间之前,它将首先调用finalize()方法。
  • finalize()方法将重写以处理系统资源,执行清理活动并最大程度地减少内存泄漏。
  • 简单来说可在释放对象前进行某些操作。

代码举例:

public class FinalizeTest {
    
    public static void main(String[] args) {
    
        Student student = new Student("YuShiwen",21);
        System.out.println(student);
        student = null;//此时对象实体就是垃圾对象,等待被回收。但时间不确定。
        System.gc();//强制性释放空间

    }

}

class Student{
    
    private String name;
    private int age;

    public Student(String name, int age) {
    
        this.name = name;
        this.age = age;
    }

    public String getName() {
    

        return name;
    }

    public void setName(String name) {
    
        this.name = name;
    }

    public int getAge() {
    
        return age;
    }

    public void setAge(int age) {
    
        this.age = age;
    }

    @Override
    public String toString() {
    
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    //子类重写此方法,可在释放对象前进行某些操作
    @Override
    protected void finalize() throws Throwable {
    
        super.finalize();
        System.out.println("进行某些操作!");
    }
}

输出结果:

Student{name='YuShiwen', age=21}
进行某些操作!

Process finished with exit code 0

垃圾回收机制关键点:

  • 垃圾回收机制只回收JVM堆内存里的对象空间。

  • 对其他物理连接,比如数据库连接、输入流输出流、Socket连接无能为力

  • 现在的JVM有多种垃圾回收实现算法,表现各异。

  • 垃圾回收发生具有不可预知性,程序无法精确控制垃圾回收机制执行。

  • 可以将对象的引用变量设置为null,暗示垃圾回收机制可以回收该对象。

  • 程序员可以通过System.gc()或者Runtime.getRuntime().gc()来通知系统进行垃圾回收,会有
    一些效果,但是系统是否进行垃圾回收依然不确定。

  • 垃圾回收机制回收任何对象之前,总会先调用它的finalize方法(如果覆盖该方法,让一
    个新的引用变量重新引用该对象,则会重新激活对象)。

  • 永远不要主动调用某个对象的finalize方法,应该交给垃圾回收机制调用。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/MrYushiwen/article/details/109717126

智能推荐

php date函数显示星期几,php如何利用date函数获取时间是星期几_好物推荐到火星的博客-程序员秘密

php如何设置页面编码php设置页面编码的方法:在php mvc的控制器里面或php页面输出meta标签,代码为【echo meta http-equiv=content-type content=text/html; charset=utf-8】。 php设置页面编码的方法: 1、在php mvc的控制器里面或php页面输出meta标签 echo meta http-equiv=cophp时区怎...

(转)SAP Bar Code 开发(02) – 条码生成与输出打印_小安子的博客-程序员秘密

https://blog.csdn.net/champaignwolf/article/details/79008950#commentBox2018年01月09日 08:59:03 ChampaignWolf 阅读数:529 标签: SAP Bar Code 开发02 条码生成与输出打SAP Bar Code 开发02 条码生成与输出打 收起个人分类: SAP&Smartform...

luarocks yum 安装引起的lapis lua 包查找问题(centos7版本)_weixin_34352449的博客-程序员秘密

备注:   大家在进行lapis 开发的时候有些人比较懒直接使用yum 按照luarocks,之后  使用luarocks 安装lapis 一般来说对于linux 64位的环境都会有些问题(包找不到) 1. 错误提示信息2017/11/18 09:54:09 [error] 21876#0: *1 lua entry thread aborted: runtime er...

html拼接路径字符串_html拼接字符串_时间不会赖着不走的博客-程序员秘密

字符串的拼接 var fristPage = '<li onclick="load('+cid+',1,\''+rname+'\')"><a href="javascript:void(0)">首页</a></li>';οnclick="load(’+cid+’,1,’’+rname+’’)"这里拼接注意注意:是整形就加 单引号加加号在中间输入想要的‘+这里拼接想要的+’如果是字符串类型‘’+这里输入+’’...

商城 商品模块 数据库 表设计_商城我的收藏 数据库设计_Bingorl的博客-程序员秘密

商城 商品模块 数据库 表设计要实现一个商城,对于商品模块中的数据库表设计不懂,主要是:相同类别的产品的产品参数相同,不同类别的不同,这里就不懂要怎么设计了,所以上网找几篇博客了解。什么是SPU、SKU、ARPU这是一篇存档性笔记,我自己存档一下对这3个词的理解。如果你已经明了了这3个词的意思,请直接忽略之首先,搞清楚商品与单品的区别。例如,iphone是一个单品,但是在淘宝上

爱不释手的《CSDN插件》,打造沉浸式阅读体验,让阅读效率快人一步_csdn阅读模式 插件_跳动的bit的博客-程序员秘密

文章目录前言一、对比三、安装前言不知道大家在阅读文章时有没有跟我一样的 “透心凉过程” —— 有时正看的得劲的时候,突然瞟了文章旁边的内容,这时又被其它的内容吸引过去了,这样一直循环往复,也就造就了碎片化的知识越来越多,导致最后 “啥也不是” 。这不CSDN浏览器助手新版本 9 月强势上线!各位客官快来围观。一、对比好的废话不多说,究竟这使用了这个插件会有什么变化呢,请看下面的对比:1️⃣</font 主页对比三、安装点我打开官网地址 1️⃣ 点击立即下载...

随便推点

网页换肤(js)_主页换肤_我不做大哥好多 年的博客-程序员秘密

鼠标滑上图片后背景图改变<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>网页换肤</title> <style type="text/css"> *{ padding: 0; margin: 0; ...

qu32调音台说明书_使用效果不错艾伦赫赛QU32调音台带中文说明书_北京金舒恺歌科技发展有限公司(亿商网手机版)..._weixin_39973416的博客-程序员秘密

使用效果不错艾伦赫赛QU-32调音台带中文说明书ALLEN&HEATH/艾伦赫赛 QU-32 32路专业数字台调音台技术参数:输入话筒/线路输入1-16(Qu-16) 1-24(Qu-24):平衡,XLR与1/4" TRS插座,全部可调用输入灵敏度(XLR/TRS):-60至+10dBu / -50至+20dBu模拟增益:-10至+60dB,1 dB步进最大输入电平(XLR/TRS):+1...

自己动手写RPC框架有那么难吗?这次我设计了一款TPS百万级别的分布式、高性能、可扩展的RPC框架(赶快收藏)_自己设计一个rpc_冰 河的博客-程序员秘密

没错,这次冰河又要搞事情了,这次准备下手的是RPC框架项目,自己动手写RPC框架。为什么要对RPC框架项目下手呢,因为在如今分布式、微服务乃至云原生不断发展的过程中,RPC作为底层必不可少的通信组件,被广泛应用在分布式、微服务和云原生项目中。

剑指offer No.47 求1+2+3+...+n_1+2+3+n 算法 剑指offer_AI算法攻城狮的博客-程序员秘密

https://www.nowcoder.com/practice/7a0da8fc483247ff8800059e12d7caf1?tpId=13&tqId=11200&tPage=3&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking题目描述求1+2+3...

Detour工具包使用_jiangxinyu的博客-程序员秘密

Detour工具包作用:拦截API函数先用一个简单的例子说明问题://dll.cpp #include #include "detours.h" static LONG dwSlept = 0;   static VOID (WINAPI * TrueSleep)(DWORD dwMilliseconds) = Sleep; VOID WINAPI TimedSleep(DWORD dwMilli

java西游记释厄传super,西游记释厄传super出招表_这样哈的博客-程序员秘密

********************************************************说明A(攻击)B(跳)C(选择宝物)D(放宝)集气后,两个人靠近同时按A+B+C ,能使出合并招式通用技,五位角色全部招数都通用,这里我就写一个了,以免累赘重复!乾坤波动功:←↓→←→+A 需要第一档气升龙斩:→↓+A 需要第二档气元神出窍:→←↓→+A 需要第三档气遁入幻境:...

推荐文章

热门文章

相关标签