finalize

垃圾回收机器(Garbage Collection),也叫GC,垃圾回收器主要有一下特点:

  • 当对象不再被程序所使用的时候,垃圾回收器将会将其回收
  • 垃圾回收是在后台运行的,我们无法命令垃圾回收器马上回收资源,但是我们可以告诉他可以尽快回收资源(System.gc()和Runtime.getRuntime().gc())
  • 垃圾回收器在回收某个对象的时候,首先会调用该对象的finalize()方法
  • GC主要针对堆内存
  • 单例模式的缺点

finalize()是Object里面的一个方法,当一个堆空间中的对象没有被栈空间变量指向的时候,这个对象会等待被java回收:jdk里面是这样实现的:

protected void finalize() throws Throwable { }
}


源码中显示的@Deprecated(since="9")的意思就是说在jdk9以后这个方法就过时了(有其他的方法代替),但还是可以试验下…

测试代码如下:

public class testFinalize
{public static void main(String[] args){Person p = new Person();p = null;//此时堆当中的Person对象就没有变量指向了,就变成了垃圾,等到垃圾回收机制调用的finalize()的时候会输出//那句话}
}class Person
{protected void finalize() throws Throwable{System.out.println("我快死了!!!");}}

测试了几次,垃圾回收机制都没有启动(这点垃圾她真的看不上)。咱们程序员也不能强制垃圾回收器启动,但是可以适当建议她启动,毕竟人家傲娇得很呢嘛,下面这代码建议她启动(增加垃圾回收器启动的概率)。

public class testFinalize
{public static void main(String[] args){Person p = new Person();p = null;System.gc();}
}class Person
{protected void finalize() throws Throwable{System.out.println("我快死了!!!");}}

你看看,你看看,人家还是不理你,看来得拿出点正当的手段了(就好比追女孩子一样,追不到,可以采取一些正当的手段,比如买束花什么的,会加分的吧…咱程序员也懂浪漫~)。改为如下代码:

public class testFinalize
{public static void main(String[] args){Person p = new Person();//送点花for(int i = 0 ; i< 1000; i++){p = null;    }       System.gc();//增加垃圾回收器启动的概率}
}class Person
{protected void finalize() throws Throwable{System.out.println("我快死了!!!");}}

现在就出来了…如果没出来可以把循环增加一下~

看来还是使点手段好用啊!

java中finalize()方法相关推荐

  1. Java 中finalize()方法起什么作用呢?

    转自: Java 中finalize()方法起什么作用呢? Java之finalize()方法功能说明 当我们在一个类中定义了finalize()方法时, 如果一个对象被垃圾收集器析构(回收)之前,则 ...

  2. Java中finalize方法用途何在?

    1 package thinking.in.java.demo; 2 3 /* 4 * finalize的用途何在? 5 * 6 *本例的终止条件是L所有的Book对象在被当做垃圾回收前都应该被签入. ...

  3. Java中finalize()方法的使用

     1.finalize()方法是什么? finalize()方法是Object类提供的方法,在GC(垃圾回收器)准备释放对象所占用的内存空间之前,它将首先调用finalize()方法.其在Object ...

  4. Java中finalize方法的使用(经典白学,新idk已经弃用)

    在jdk文档中,其解释为当垃圾回收器确定不存在对该对象的更多的引用时,由对象的垃圾回收器调用此方法. 什么情况下会被回收:某个对象没有任何引用时,则jvm就认为这个对象是一个垃圾对象,用垃圾回收机制调 ...

  5. Java中finalize方法

    前沿:在面试过程中我们可能会被问到final.finally.finalize的区别?本篇文章将介绍finalize的简单用法. Finalize()是Object类的方法. 在GC准备释放对象所占用 ...

  6. Java中finalize()用法

    Java中finalize() 垃圾回收器要回收对象的时候,首先要调用这个类的finalize方法(你可以 写程序验证这个结论),一般的纯Java编写的Class不需要重新覆盖这个方法,因为Objec ...

  7. 使用java中replaceAll方法替换字符串中的反斜杠

    今天在项目中使用java中replaceAll方法将字符串中的反斜杠("\")替换成空字符串(""),结果出现如下的异常: 1 java.util.regex. ...

  8. java中collection方法_Java 8中的Collector toCollection()方法

    toCollection()Java中的Collector类的方法返回一个Collector,该Collector以遇到的顺序将输入元素累积到一个新的Collection中. 语法如下static & ...

  9. java 返回值判断_在Java中判断方法重载的条件除了参数外,还可以通过返回值类型判断。_学小易找答案...

    [单选题]若int x;且有下面的程序片断,则输出结果是() . for (x=3; x<6; x++) { printf((x%2) ? "##%d" : "** ...

最新文章

  1. Asp.Net 上传大文件专题(3)--从请求流中获取数据并保存为文件[下]
  2. java 线程池ThreadPoolExecutor
  3. HMM算例 python 有代码
  4. wxpython使用matplot_测试怎么将MatPlotLib嵌入到wxPython中
  5. STM32F0308DISCOVERY探索套件
  6. 微软推出免费在线系统诊断工具--不用手动下载
  7. Docker部署SpringBoot的两种方法,后一种一键部署超好用!
  8. 1 MM配置-企业结构-定义-定义评估级别
  9. flutter TabBar 底部导航栏
  10. 求高人指点此分页存储过程怎么样?
  11. shell---字体颜色
  12. 这些年看过的书...
  13. excel文件修复工具_psd文件修复工具下载|Recovery Toolbox for ps 最新版v2.3.1.0 下载
  14. 7.数据归档(Archiver)
  15. 9 个 yyds Java项目,可应对各种私活!
  16. JAVA 图片格式检查方法
  17. 苹果要创新,IPhone是累赘
  18. PS3安装Linux Fedora Core 6教程
  19. 微信小说小程序源码-附带采集
  20. Python win32com 操作word 插入回车符,换行符

热门文章

  1. 光芒四射(Shining)
  2. 生态系统服务---生态系统服务构建生态安全格局、生态系统服务权衡与协同动态分析、PLUS模型多情景模拟预测、PLUS模型、城镇化与生态系统健康空间关系分析、生态系统服务功能社会价值评估
  3. 帮帮忙!!!!!!!
  4. Web 1.0、Web 2.0 和 Web 3.0 之间的比较
  5. ASP.NET(七)---Repeater控件使用方法
  6. MySQL安装图解详细教程
  7. 有关C++几个重要的字符类型,LPCWSTR,LPCSTR,PCWSTR,TCARH
  8. CTF—攻防练习之HTTP—暴力破解
  9. Apollo配置中心简介
  10. ZOJ 2100 Seeding ( DFS 经典回溯