java中什么时候应该使用finalize()方法?

2024-01-02

我们什么时候应该真正使用java中的finalize()方法?

如果我们想在finalize()方法中关闭连接,那么最好使用下面的代码,因为等待GC调用finalize()方法然后释放连接是没有意义的

try{
// Connection creation
}finally{
//close connection
}

所以问题是 Finalize() 方法现在还有用吗?


通过显式调用方法来释放资源确实更好。终结器不一定会立即调用,甚至根本不会调用。他们还增加了性能损失。

然而,终结器仍然可以用作释放资源的安全网,以防客户端忘记显式处置。

来自 Joshua Bloch 的《Effective Java》第二版中的主题“避免终结器”:

[D]除非作为安全网或终止非关键,否则不要使用终结器 原生资源。在极少数情况下,您确实使用了终结器, 记得调用 super.finalize。如果您使用终结器作为安全网, 请记住记录终结器中的无效用法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java中什么时候应该使用finalize()方法? 的相关文章

  • Spring 框架 application.properties 与 logback.xml

    我正在使用 Spring 和 Spring boot 最近 在尝试使用 EhCache 时 我尝试为 EhCache 启用日志记录 在 application properties 中设置日志级别 logging level org spr
  • cucumber.json 报告被重新运行场景报告覆盖

    我有一个具有相同技术堆栈 JAVA1 8 Cucumber JVM JUnit Maven 的 UI 测试项目和一个 API 测试项目 这两个项目都向我展示了这个问题 可能是因为两者都存在相同的依赖关系集 我使用了使用 maven sure
  • 在 Java 中重新抛出异常而不丢失堆栈跟踪

    在 C 中 我可以使用throw 语句重新抛出异常 同时保留堆栈跟踪 try catch Exception e if e is FooException throw Java中有没有类似的东西 不会丢失原始堆栈跟踪 catch Whate
  • CDI 对象无法使用注入的构造函数进行代理

    当尝试将参数注入 CDI bean ApplicationScoped 的构造函数时 我遇到以下问题 Caused by org jboss weld exceptions UnproxyableResolutionException WE
  • firebase android 基于类的更新不尊重字段名称的大小写

    我声明了以下类 注意大小写选择 public class User private String DisplayName private Boolean Proxy false SuppressWarnings unused public
  • 如何获取JavaFX的版本号?

    如何在运行时找出我正在使用哪个版本的 JavaFX 简单的方法之一就是简单地阅读javafx properties文件位于您的 JAVA HOME jre lib目录 我现在安装了 Java 1 7 u9 与之捆绑的 JavaFX 是 v2
  • 原型组件的 Spring 事件处理

    假设我有两个组件 X 和 Y 其中 X 是单例 而 Y 不是 当我发布XUpdateEvent时 没有问题 我可以捕获该事件 但是 对于 YUpdateEvent 我无法捕获事件 Spring 为每个触发的事件创建新实例 而不是使用已经创建
  • 如何在Netbeans中自定义jTable标题列字体大小?

    我尝试改变jtable标题字体大小Netbeans 但还不能 无论如何 表行字体大小已成功更改 这是我使用的方法 更改后的输出 问题 标题字体大小未更改 但我也想改变这一点 所以请帮助我该怎么做 一种方法是使用UIManager并替换默认的
  • 如何统计lucene索引中每个文档的term数?

    我想知道 lucene 索引中每个文档的术语数量 我一直在 API 和互联网上搜索 但没有结果 你能帮助我吗 Lucene 的构建是为了回答相反的问题 即哪些文档包含给定术语 因此 为了获取文档的术语数量 您必须进行一些修改 第一种方法是存
  • 结果显示图像上有衬里

    我正在使用 opencv 和 android ndk 下面是我的 jni 代码 void Vignete Mat img1 Mat img2 Mat out resize img1 img1 img2 size img1 convertTo
  • Java 线程 JavaDoc

    我编写了一个只能在特定线程上调用的方法 是否应该将标准注释或注释添加到方法的 javadoc 中来表示这一点 不知道有任何这样的标准注释 Java 并发实践 http www javaconcurrencyinpractice com 在第
  • ImageIO read() 和 write() 操作后 GIF 图像变得错误

    我有这个代码 它只是读取 GIF 文件 用背景重新绘制它 然后输出到新的 GIF 文件 问题是结果文件变得奇怪 我不知道为什么它的质量变得很差 JPG 文件不会出现此问题 如何修复它 import java awt Color import
  • 使用 Spring 的 SimpleNamingContextBuilder 的应用程序如何知道在其目录中搜索资源?

    使用 Spring 的应用程序如何SimpleNamingContextBuilder http static springsource org spring docs 3 0 x api org springframework mock
  • android.R.layout.simple_list_item_1是什么?

    在我看到的所有示例中 他们在创建 ArrayAdapter 时仅使用 android R layout simple list item 1 android R layout simple list item 1是什么 它只是一个名为sim
  • JNA Windows 服务启动类型

    我一直在使用 JNA 并且能够使用下面的代码返回 Windows 服务的状态 即启动或停止 但我不确定如何返回服务的启动类型 我确信 JNA 之外还有其他方法 但如果可能的话我想继续使用 JNA import com sun jna imp
  • C中使用JNI从对象获取对象

    public class Student private People people private Result result private int amount 这是 Java 中类的示例 在C中 我试图获取 学生 中的 人 但失败了
  • 删除子类中的注释?

    我有一个子类 需要一个注释 在删除的父类中声明 做这个的最好方式是什么 public class Parent MyAnnoation String foobar public class Child extends Parent here
  • Java中精确的时间测量

    Java 提供了两种获取当前时间的方法 System nanoTime and System currentTimeMillis 第一个给出的结果以纳秒为单位 但实际精度比这要差得多 许多微秒 JVM 是否已经为每台特定机器提供了最佳的价值
  • 如何使用属性文件在log4j2中创建多个日志文件?

    我正在使用 property 文件在特定路径中创建日志文件 但我正在使用它创建单个文件 以下是我的属性文件代码 status error dest err name PropertiesConfig property filepath ap
  • 获取给定字符串日期中该月的最后一天

    我的输入字符串日期如下 String date 1 13 2012 我得到的月份如下 SimpleDateFormat dateFormat new SimpleDateFormat MM dd yyyy Date convertedDat

随机推荐

  • Facebook 图形 API 速率限制和批量请求

    我见过一些人提到的 600 次调用 600 秒的速率限制 例如quora http www quora com Whats the Facebook Open Graph API rate limit 我想知道我是否可以做600batch
  • Flutter 音频播放器返回错误的播放时间?

    我在用着audioplayers 1 1 0从 url 播放音频的插件 玩得很好 但是player onPositionChanged在特定的秒数之后 它会重新启动 并且计时器从 0 开始 这样我的滑块又从 0 开始了 player onP
  • 启动画面在 PhoneGap Build 中不起作用

    无论是 Android 还是 iOS 我都无法让闪屏正常工作 我正在使用 PhoneGap Build 并且我已经像这样设置了 config xml 现在适用于 v3 0 0
  • 如何从 URI 获取完整文件路径

    我想从 URI 获取完整的文件路径 URI 不是图像 而是音乐文件 但如果我像 MediaStore 解决方案那样执行此操作 则如果应用程序用户选择 Astro 作为浏览器而不是音乐播放器 它将无法工作 我该如何解决这个问题 PathUti
  • 搜索数据库 - ASP.NET MVC C#

    我正在尝试在我的 ASP NET MVC C Linq to Sql 网站中实现完整的搜索功能 该网站由大约 3 4 个表组成 其中包含我想要搜索的大约 1 2 列 这是我到目前为止所拥有的 public List
  • UITableView 自定义节标题,重复问题

    我在为自定义 UITableView 部分标题设置动画时遇到问题 目标是创建可折叠的部分 当我第一次点击自定义标题时 它会按预期进行动画处理 但此后每次它都会在原始位置留下重复项并为另一个进行动画处理 图片示例 My Custom Head
  • 将 NA 值替换为组值

    我有一个 df 如下 有 5 个家庭 20 人 家庭中的某些人缺少关于是否拥有医疗卡的数据 我想为这些人提供与家庭中其他人相同的值 不是 NA 值 而是 0 或 1 的真正二进制值 我已经尝试了以下代码 我认为这是朝着正确方向迈出的一步 但
  • 编译时触发 std::vector 的范围检查

    目标 我想要一个范围检查版本std vector s operator 对于我的调试版本 在发布模式下没有范围检查 调试模式下的范围检查显然有利于调试 但它会导致我的发布代码减慢 5 10 这是我希望避免的 可能的解决方案 我在 Strou
  • 如果单元格自动更新,“编辑”功能将不起作用 - 需要解决方法 Google 表格

    当您手动更改单元格时 此代码将按预期工作 function onEdit event assumes source data in sheet named Prepsheet target sheet of move to named To
  • Android应用程序强制关闭时会发生什么

    我很想知道当应用程序在很长一段时间内没有响应时 当用户单击弹出窗口中的 强制关闭 时会发生什么 哪些事件会被解雇 任务会从托盘中删除吗 我认为当一个活动被强制关闭时 dalvik 将清理应用程序缓存并启动后台堆栈中的最后一个活动 但不确定它
  • XSD 两个具有相同名称但属性值不同的元素

    我正在尝试为以下内容定义 XSD 模板
  • 如何修复 python `dlib` 错误:“在平面命名空间 '_png_do_expand_palette_rgb8_neon' 中找不到符号”?

    我收到错误 symbol not found in flat namespace png do expand palette rgb8 neon 尽管发生了错误dlib正在安装相关 Python 版本的软件包 我正在使用 VSCode 以防
  • 为什么匿名类型不能在方法中传递?

    倾向于不从方法返回匿名类型的设计决策是什么 You can从方法返回匿名类型的实例 但因为您无法命名它 所以您无法准确声明该方法将返回什么 因此您必须声明它只返回object 这意味着调用者将无法对属性等进行静态类型访问 尽管他们仍然可以传
  • Qt/C++:如何获取远程PC(通信对端)MAC地址?

    我在 Windows 7 上使用 Qt5 在我的应用程序中 TCP服务器 我目前正在使用 QTcpSocket 类中的一些方法 QAbstractSocket peerAddress 为了得到对等地址 QAbstractSocket pee
  • 在Entity Framework4中捕获Sql异常?最佳实践是什么?

    您在数据层中使用什么实践来捕获 sql 异常 有人编写了一个通用 Sql 异常处理程序来捕获最常见的错误吗 你是怎么做到的 有什么例子吗 Thanks 仅由底层处理意外异常 数据层 在本例中为实体框架 的异常应仅由业务层处理 然后 业务层可
  • 如何在 TypeScript 中通过导入使用命名空间

    我在两个单独的文件中有两个类 一个从另一个文件扩展 基类包含一些import使用节点模块的语句 我不清楚为什么派生类 位于单独的文件中 无法识别基类 有人可以澄清一下吗 UtilBase ts
  • 如何让 ZK webfragment 与嵌入式 Jetty 9 一起工作?

    这个最小的嵌入式 Jetty 项目可以正确启动 扫描注释并查找并映射带注释的 TestServlet 项目结构 src main java test Test java webapp test zul pom xml 测试 java pac
  • 为什么 IIS 不支持分块传输编码?

    我正在与 IIS Web 服务器建立 HTTP 连接 并使用使用 Transfer Encoding chunked 编码的数据发送 POST 请求 当我这样做时 IIS 只是关闭连接 没有错误消息或状态代码 根据HTTP 1 1 规范 h
  • 当应用程序部署到 JBoss 时显示一条消息

    当我通过 JBoss AS 7 1 1 部署应用程序时 如何显示消息来提醒用户 我正在使用的技术 四郎1 2 3 莫贾拉2 1 7 PrimeFaces 5 1 JDK 1 7 JBoss 7 1 1 在 JBoss AS 前面放置一个准系
  • java中什么时候应该使用finalize()方法?

    我们什么时候应该真正使用java中的finalize 方法 如果我们想在finalize 方法中关闭连接 那么最好使用下面的代码 因为等待GC调用finalize 方法然后释放连接是没有意义的 try Connection creation