java中finalize()方法

article/2025/9/14 2:34:06

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("我快死了!!!");}}

在这里插入图片描述

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

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


http://chatgpt.dhexx.cn/article/VmDvP7Xe.shtml

相关文章

Finalize详解

finalize()方法详解&#xff0c;前言&#xff0c;finalize()是Object的protected方法&#xff0c;子类可以覆盖该方法以实现资源清理工作&#xff0c;GC在回收对象之前调用该方法。 finalize的作用: (1)finalize()与C中的析构函数不是对应的。C中的析构函数调用的时机是确定的…

finalize的理解

finalize的理解 一般的回答&#xff1a;它是Object中的一个方法&#xff0c;子类重写它&#xff0c;垃圾回收时候方法会被调用&#xff0c;可以再其中进行一些资源的解释和清理工作。 优秀的回答&#xff1a;将资源的释放和清理放在finalize方法中是非常不好的&#xff0c;影…

Java FX swt_DOC-13-08 JavaFX与SWT的协作性

DOC-13-08 JavaFX与SWT的协作性 本章展示了如何在SWT应用程序中加入一个JavaFX场景图&#xff0c;以及如何使SWT和JavaFX控件协作。 介绍 如果你开发SWT应用程序&#xff0c;你知道SWT使用本地操作系统的控件&#xff0c;而且并不能简单的配置来使用高级GUI特性&#xff0c;比如…

Java SWT 表格Table如何动态显示信息

让Table显示信息用到的是TableItem类。创建一个TableItem类对象&#xff0c;通过调用该对象的setText( new String[ ] )方法可以显示一行数据&#xff0c;循环调用则可以显示多条不同的数据。 一、步骤: 1. 创建Table类 。最好将Table类设置为全局变量。并且设置该表格有多少列…

Java ——SWT利用DateTime获取日历控件

1、话不多说&#xff0c;先看效果图&#xff1a; 19是我选择的日期&#xff0c;其他功能就不一一介绍了&#xff0c;这个看你们自己。 2、Test01界面&#xff1a; Test01代码如下&#xff1a; package test; import org.eclipse.swt.widgets.Display; import org.eclipse.swt…

shell swt 样式_SWT之路:SWT图像显示

简明现代魔法 -> Java编程语言 -> SWT之路&#xff1a;SWT图像显示 SWT之路&#xff1a;SWT图像显示 2009-10-03 程序演示 还是先用SWT Desiner创建界面程序。然后创建一个Display对象和Image对象&#xff0c;和一个GC对象。类org.eclipse.swt.graphics.GC是一个封装了所…

eclipse java swt_Eclipse下搭建SWT开发环境

0.序言 还是老风格&#xff0c;从头写些基本的东西&#xff0c;帮助自己&#xff0c;也帮助正处于困惑中的别人。今天介绍的是Eclipse下的SWT的配置过程。自己前两天要做个项目&#xff0c;配置了半天都不正确&#xff0c;后来慢慢总结了一下&#xff0c;不同环境配置的方法可能…

java swt button_JAVA.SWT/JFace: SWT基本组件之按钮(Button)

《Eclipse SWT/JFACE 核心应用》 清华大学出版社 5.2 按钮(Button) 按钮有普通按钮(SWT.PUSH)、单选按钮(SWT.RADIO)、多选按钮(SWT.CHECK)、箭头按钮(SWT.ARROW)和切换按钮(SWT.TOGGLE)几种类型。 同时&#xff0c;也可以设置按钮的样式。设置按钮文字对齐的样式有SWT.LEFT、S…

Java SWT 表格Table实时刷新数据

一、动态展示数据 当对表格展示的数据进行删除和增加的时候&#xff0c;想实时进行表格数据更新显示。用到的方法是&#xff0c;首先将表格数据全部删掉&#xff0c;然后在读取数据库最新的数据显示到表格中。  可以将显示表格信息的代码封装成一个方法&#xff0c;当对当前表…

Java SWT封装Table显示数据

一个表格就类似于一张二维表。第一行为关系模型&#xff0c;就是每一列的列名。从第二行开始就是表的数据&#xff0c;简称元组。下面实现对其Table的封装。 首先显示一个窗口。创建一个Table。将在showTableInfos()方法对Table表格进行封装。 import org.eclipse.swt.widgets.…

SWT控件总结

控件palette 1.System Choose component 选择组件&#xff1a;允许选择组件类型并将其拖放到设计画布上 Tab Order标签的顺序&#xff1a;设置所选选项卡顺序 2.Composites Composite 复合&#xff1a;能够包含其他控件的控件 Group 集团&#xff1a;提供带有可选标题的蚀…

SWT和JFace应用笔记

SWT和JFace应用笔记 链接&#xff1a;https://pan.baidu.com/s/1To4Lhgan4xEr1iaFA0Rerg 提取码&#xff1a;63qm 1.SWT笔记 一.创建一个SWT程序有3个部分 1.初始化窗口:首先创建Dispaly对象和Shell对象。Display&#xff1a;对象封装了调用操作系统的有关方法Shell&#xf…

matlab swt函数,matlab swt 函数出错

matlab swt 函数出错 我在用matlab swt 函数分解信号时总是出现以下错误&#xff0c;麻烦各位高手告知该怎么修改&#xff0c;swt函数如何ERROR ... ---------------------------------------------------------------------------------------------------------------------…

【SWT】自定义数据表格

目的 使用SWT技术自定义数据表格&#xff0c;本文抛砖引玉&#xff0c;给出了SWT构建数据表格的基本思路和简单实现。更多特殊需求即表格功能实现待续…… 思路 数据表格由表格头与表格体两边部分组成。 表格头部分是固定的&#xff0c;其字段右侧包含一个简单的表格工具–…

【SWT】Lable 文字折行

目标 当Label 中的文字过多时&#xff0c;使得文字折行显示。 效果如图所示&#xff1a; 分析与实践 Label 自带样式是一行显示所有信息。当一行显示不下时&#xff0c;超出部分会被隐藏掉&#xff0c;当Label有足够长度时再将其展示出来。Label这种处理超出部分的方式很粗…

java swt 几种布局_实战SWT布局

fortune 阅读(577) 评论(0) 编辑 收藏 所属分类: java技术 标准的SWT布局类FillLayout&#xff1a;在容器中以相同的大小单行或单列的排列组件 RowLayout&#xff1a;以单行或多行的方式使用几个选项(fill,wrap,spacing,justify,type)定制组件的排列方式 GridLayout&#xff…

【SWT】内容分割线

目标 SWT 容器中画横向直线或竖向直线将容器中的内容分割开来。本文介绍了官方的两个示例&#xff0c;效果图见实践部分。 分析 SWT 中至少由两种方法画直线&#xff08;横向或纵向&#xff09; SWT 中的GC可以画直线 这种方法最容易想到&#xff0c;但实现起来比较麻烦&a…

SWT

strock width transform,全称笔画宽度变换&#xff0c;是一种局部的图像算子用于提取字符&#xff08;letter&#xff09;的笔画宽度作为图像特征。算法步骤如下&#xff1a; 分成三个部分&#xff1a; - 用canny算子计算梯度及方向 - SWT提取笔画宽度得到字符候选区域&am…

eclipse下搭建SWT图形界面开发环境

什么是SWT 参考&#xff1a;http://www.cppblog.com/baby-fly/archive/2009/10/20/99008.html 用java的人一定都知道AWT和Swing&#xff0c;而SWT(Standard Widget Toolkit)则是由Eclipse项目组织开发的一套完整的图形界面开发包&#xff0c;虽然当初仅仅是IBM为了编写Eclipse的…

SWT布局(Layouts)

每种类型操作系统对屏幕的定义不一样&#xff0c;在开发跨平台应用软件时&#xff0c;我们一般都会使用布局&#xff08;Layout&#xff09;来管理复合控件&#xff08;Composite&#xff09;中子控件的位置和大小。通过布局&#xff0c;程序员可以充分展示那些埋没已久的艺术细…