java中System.gc()和finalize()方法有什么区别?

2024-02-17

我对 java 的 system.gc() 和 Finalize() 方法感到困惑。 我们不能强制将垃圾对象收集到 JVM。我们可以在java代码中编写这两种方法,那么如果它们都用于垃圾收集,那么java提供两种垃圾收集方法有什么意义呢?

请告诉我这两种方法的确切工作原理以及其内部如何工作?


System.gc()恳请系统执行垃圾收集。 Javadoc 说:

运行垃圾收集器。

您无法控制垃圾收集器的工作“努力”程度。垃圾收集器的内部工作方式是特定于虚拟机的,并且它本身就是一个研究主题。但通常会进行“完整”垃圾收集和一些较小的“增量”收集。所以考虑System.gc作为请求,但不能保证您的对象会发生垃圾收集。

Object.finalize()可以重写以指定当给定对象被垃圾收集时要执行的操作(实际上是在垃圾收集之前要执行的操作)。 Javadoc 说:

垃圾收集时由对象上的垃圾收集器调用 确定不再有对该对象的引用。

终结器的经典用途是在对象被垃圾收集时取消分配系统资源,例如释放文件句柄、临时文件等

当 JVM 退出时,不要使用终结器执行操作。为此,请使用您注册的关闭挂钩Runtime.getRuntime().addShutdownHook(Thread).

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

java中System.gc()和finalize()方法有什么区别? 的相关文章

随机推荐

  • libstdc++ 并行模式:谁在使用它?安全吗?有类似的项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 C 库的 GNU 实现支持并行模式 解释如下here http gcc gnu org onlinedocs libstdc manual pa
  • 在 Homestead 上运行 Laravel Dusk

    我用的是家园版本1 0 1 and Laravel 版本 5 4 16 我通过阅读来设置 Laravel dusk文档 https laravel com docs 5 4 dusk installation 但是 当我跑步时php art
  • 如何在 Rails 迁移中将可空列更改为不可空列?

    我在之前的迁移中创建了一个日期列并将其设置为可为空 现在我想将其更改为不可为空 假设该数据库中存在空行 我该如何执行此操作 如果这些列当前为空 我可以将它们设置为 Time now 如果您在迁移中执行此操作 那么您可能可以这样做 Make
  • SvelteKit 瞬间无样式 html

    我通过 sveltekit cli 命令创建了一个基本应用程序 我选择的选项是 scss 和 typescript 当我启动应用程序的一瞬间 我看到了无样式的 html 每次我创建的每个项目都会发生这种情况 我做了一些测试 看起来 css
  • Azure Function 给出错误:此平台不支持 System.Drawing

    如果这个问题措辞不好 有人可以帮我解决吗 我有一个 Azure Function 2 0 它依赖于一些 System Drawing 代码 我添加了对 System Drawing Common 4 5 0 的 NuGet 引用 然而 发布
  • 如何在Contact Form 7 WordPress中实施Google Adwords转换代码

    我想将 Google 转化 Adwords 代码集成到联系表7插件无需重定向到 谢谢 页面 如何在中实现 Google Adwords 转换代码联系表7插件 有人可以帮助我吗 我不喜欢重定向到另一个页面 我在联系表单 7 中找到了实施 Go
  • 如何遍历/迭代 STL 映射?

    我想遍历一张STL地图 我不想使用它的密钥 我不关心顺序 我只是寻找一种访问它包含的所有元素的方法 我怎样才能做到这一点 是的 您可以遍历标准库map 这是用于遍历的基本方法map 并作为遍历任何标准库集合的指导 C 03 C 11 inc
  • JavaScript 在某个索引后找到第一个正则表达式匹配

    我想找到第一个RegExp一定之后匹配index in a String在 JavaScript 中 JavaScriptString prototype indexOf在搜索开始处提供第二个参数限制 但indexOf只支持String n
  • CryptographicException:错误的 PKCS7 填充

    我看到一小部分生产用户随机报告与使用 Xamarin Android 加密 解密字符串相关的异常 但不幸的是我无法重现它 什么可能导致此问题和 或如何重现该异常 以便找到修复 解决方法 CryptographicException Bad
  • Swift 像闭包一样使用选择器参数

    我只是想知道是否可以将函数传递给按钮操作 通常是选择器 例如 通常我会说 UIBarButtonItem title Press style Done target self action functionToCall func funct
  • 当前拓扑不支持会话

    Hi 我收到错误 当前拓扑不支持会话 请参考附图 并编码为 async function insertBooking parking aFunction const session await BookingSchema startSess
  • 为什么我不能将此接口转换为具体类?

    我有一个界面IApiDataWithProperties 一个类叫做Event实现了这个接口 通常我可以投射一个对象IApiDataWithProperties to Event 假设它是一个 并且编译器让我这样做没有问题 在这种情况下 该
  • 在Oracle中的SQL查询中获取固定数量的行[重复]

    这个问题在这里已经有答案了 请帮我在Oracle数据库中编写一个SQL查询 有一个名为 tbl 的表 它有 12 行 我想先选择前 4 行 然后选择下 4 行和最后 4 行 谁能告诉我如何在 Informix 中做到这一点 编辑 现在应该通
  • PySpark 2.x:以编程方式将 Maven JAR 坐标添加到 Spark

    以下是我的 PySpark 启动片段 非常可靠 我已经使用它很长时间了 今天我添加了两个 Maven 坐标 如图所示spark jars packages选项 有效地 插入 Kafka 支持 现在通常会触发依赖项下载 由 Spark 自动执
  • 如何从 PHP 调用网站服务?

    我的问题如下 我的服务器上有一个 EmailReports php 我用它来发送邮件 例如 电子邮件受保护 cdn cgi l email protection 什么 123456 pdf 我无法修改 EmailReports php 因为
  • 快速查找字符串是否在数组中的方法

    在 Ruby 中 查找字符串是否在数组中 include x 非常慢 如果将该数组更改为集合 则BAM 闪电般的快速查找 在 JavaScript 中 没有集合 数组查找 indexOf x gt 0 也是very很慢 但是我需要在脚本中执
  • jquery DomWindow 用于网页上的所有链接

    是否可以实现本页的示例3 http swip codylindley com DOMWindowDemo html http swip codylindley com DOMWindowDemo html适用于网页上的所有链接 不仅仅是带有
  • 如何使用回调机制?

    我必须实施一项信用卡申请 其中我必须只处理一个信用卡帐户 类似的操作credit debit pinChange 但对我来说问题是我必须使用 JAVA CALLBACK 机制在两种情况下通知用户 引脚更改时 当余额低于 5000 时 如何使
  • SaveFileDialog 阻止可移动驱动器

    我使用 SaveFileDialog 让用户在可移动驱动器上选择目录和文件名 然后我创建该文件 写入该文件 然后再次关闭它 到那时 文件本身尚未锁定 可编辑 可删除 但我无法弹出驱动器 因为 Windows 声称它仍在使用中 我必须先退出应
  • java中System.gc()和finalize()方法有什么区别?

    我对 java 的 system gc 和 Finalize 方法感到困惑 我们不能强制将垃圾对象收集到 JVM 我们可以在java代码中编写这两种方法 那么如果它们都用于垃圾收集 那么java提供两种垃圾收集方法有什么意义呢 请告诉我这两