Java是否有析构函数?

问题:

Is there a destructor for Java? Java是否有析构函数? I don't seem to be able to find any documentation on this. 我似乎无法在此找到任何文档。 If there isn't, how can I achieve the same effect? 如果没有,我怎么能达到同样的效果?

To make my question more specific, I am writing an application that deals with data and the specification say that there should be a 'reset' button that brings the application back to its original just launched state. 为了使我的问题更具体,我正在编写一个处理数据的应用程序,规范中说应该有一个“重置”按钮,以将应用程序恢复到其最初的启动状态。 However, all data have to be 'live' unless the application is closed or reset button is pressed. 但是,除非关闭应用程序或按下重置按钮,否则所有数据都必须处于“活动”状态。

Being usually a C/C++ programmer, I thought this would be trivial to implement. 我通常是C / C ++程序员,所以我认为这是微不足道的。 (And hence I planned to implement it last.) I structured my program such that all the 'reset-able' objects would be in the same class so that I can just destroy all 'live' objects when a reset button is pressed. (因此,我计划最后实现它。)我对程序进行了结构设计,以使所有“可重置”对象都位于同一类中,以便在按下重置按钮时可以销毁所有“活动”对象。

I was thinking if all I did was just to dereference the data and wait for the garbage collector to collect them, wouldn't there be a memory leak if my user repeatedly entered data and pressed the reset button? 我在想,如果我只是想取消引用数据并等待垃圾收集器来收集它们,如果我的用户重复输入数据并按下“重置”按钮,会不会发生内存泄漏? I was also thinking since Java is quite mature as a language, there should be a way to prevent this from happening or gracefully tackle this. 我也在想,因为Java作为一种语言已经相当成熟,所以应该有一种方法可以防止这种情况的发生或妥善解决。


解决方案:

参考一: https://stackoom.com/question/ijQ/Java是否有析构函数
参考二: https://oldbug.net/q/ijQ/Is-there-a-destructor-for-Java

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java 面试知识点笔记(六)垃圾回收 下篇

问:Object的finalize()方法的作用是否与C的析构函数作用相同?与C的析构函数不同,析构函数调用是确定的,而finalize是不确定的将未被引用的对象放置于FQueue队列(垃圾收集器确定一个对象死亡时需要至少两次标记过程。第一次是可达性分析,没有引用则会标记并且判断是否执行finalize方法,如果对象覆

C++ 析构函数与内存池

CPrimer书中也提到编写class时要注意copycontrol成员(拷贝构造函数,赋值操作符,析构函数,C11又多个移动构造函数)。工作时在C和C之间切换,有时就忘记了C的细节(真的好讨厌)。C析构函数与构造函数对应,构造对象时调用构造函数,析构对象时调用析构函数,于是可以在对象的析构函数中释放资