为什么从 java 9 PhantomReference java doc 开始,它就专门用于 POST-mortem 清理操作,尽管它之前是 PRE-mortem

2023-12-14

PhantomReference java 8 的 java 文档更少看起来像这样:

幻像引用对象,在收集器之后排队 确定它们的引用对象可以以其他方式被回收。幻影 参考最常用于调度事前清理 行动以比 Java 更灵活的方式 最终确定机制。如果垃圾收集器确定 幻影引用的所指对象是某个时间点 幻影可达,那么在那时或稍后的某个时间它将 将引用排队。

为了确保可回收对象保持这样的状态,引用对象 幻影引用的 get 方法可能无法被检索: 幻像引用始终返回 null。

与软引用和弱引用不同,幻像引用不是 当它们排队时,垃圾收集器会自动清除它们。 可通过幻像引用访问的对象将保持不变 直到所有此类引用被清除或它们本身变得无法访问

PhantomReference java 9 的 java 文档更高的看起来像这样:

幻像引用对象,在收集器之后排队 确定它们的引用对象可以以其他方式被回收。幻影 参考文献最常用于安排死后清理 行动。假设垃圾收集器在某个点确定 当某个对象虚拟可达时。到时候就会 以原子方式清除对该对象和所有幻像的所有幻像引用 对任何其他幻像可达对象的引用 对象是可达的。同时或稍后的某个时间 将那些新清除的已注册的幻像引用排入队列 与参考队列。

为了确保可回收对象保持这样的状态,引用对象 幻影引用的 get 方法可能无法被检索: 幻像引用始终返回 null。

有什么变化吗虚拟参考java 9 中的行为?或者只是java创始人重新考虑了该类的奉献?


从 Java 9 开始,PhantomReference(公关)是自动清除。您看到的是由于该更改而产生的 Javadoc 更改。

在 Java 9 之前,PR 引用的对象保持活动状态,即使其get()会回来null。因此,在 PR 本身死亡之前,所指对象在技术上仍然是活着的,尽管您无法获取对它的引用。这种行为的好处还不是很清楚。无论如何,公关处理将是“事前清理”。

在 Java 9 之后,PR 在入队之前被清除(就像其他类型的弱/软引用一样),在应用程序代码处理 PR 之前,引用对象本身就完全死亡,这将是“事后清理”。

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

为什么从 java 9 PhantomReference java doc 开始,它就专门用于 POST-mortem 清理操作,尽管它之前是 PRE-mortem 的相关文章

  • Google 地图查询返回的 JSON 包含像 \x26 这样的编码字符(如何解码?)

    在 Java 应用程序中 我获取 JSON 来自 Google 地图 其中包含以下字符 x26我想将其转换为其原始字符 据我所知 这是一个 UTF 8 表示法 但我不完全确定 在源 JSON 中 可能会出现各种编码字符 例如 x3c div
  • JTree 节点不会被直观地选择

    不知何故 我无法为我的 JTree 节点启用 选择突出显示 我正在我的项目中使用自定义单元格渲染器 这很可能导致此问题 这是完整的渲染器类代码 protected class ProfessionTreeCellRenderer exten
  • 通过 InjectMocks Spy 注入对象

    我需要对一个类运行一系列单元测试 该类具有 Autowired Logger 实现 实现的基本思想是 Mock Logger logger InjectMocks TestedClass tested 但我想保存日志输出功能 Mockito
  • 有没有好的方法来解析用户代理字符串?

    我有一个Java接收模块User Agent来自最终用户浏览器的字符串的行为需要略有不同 具体取决于浏览器类型 浏览器版本甚至操作系统 例如 FireFox 7 0 Win7 Safari 3 2 iOS9 我明白了User Agent由于
  • 如何对 IntStream 进行逆序排序

    我正在使用 txt 文件读取数字BufferedReader 我想颠倒该流中元素的顺序 以便在收集它们时 它们将从最高到最低排列 我不想在构建数组后进行排序 因为我不知道其中可能有多少元素 我只需要最高的 N 个元素 in new Buff
  • 使用 Spring 时实例化对象,用于测试与生产

    使用 Spring 时 应该使用 Spring 配置 xml 来实例化生产对象 并在测试时直接实例化对象 这样的理解是否正确 Eg MyMain java package org world hello import org springf
  • Java 泛型/类型调度问题

    考虑以下程序 import java util List import java util ArrayList public class TypeTest public static class TypeTestA extends Type
  • 方法断点可能会大大减慢调试速度

    每当向方法声明行添加断点 在 Intellij IDEA 或 Android Studio 中 时 都会出现一个弹出窗口 方法断点可能会大大减慢调试速度 为什么会这样戏剧性地减慢调试速度 是我的问题吗 将断点放在函数的第一行有什么不同 Th
  • 场景生成器删除 fxml 文件中的导入

    我使用场景构建器 Gluon Scene Builder JavaFX Scene Builder 8 1 1 来创建应用程序的 UI 并使用 Eclipse 开发 JavaFX 现在 每次我在场景生成器中保存某些内容时 它都会从 fxml
  • Java替换特定字符

    这是我在这个网站上的第一个问题 所以我会尽量不要成为一个十足的菜鸟 我目前正在用java 创建刽子手游戏 所以我问你的问题是我们是否被赋予了 幽灵 这个词 并将 Ghost 替换为 hiddenWord ghost length for i
  • 想要开发像 Facebook 这样的网站 - 处理数百万个请求 - 高性能 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想用 Java 开发一个像 Fac
  • 参数动态时如何构建 JPQL 查询?

    我想知道是否有一个好的解决方案来构建基于过滤器的 JPQL 查询 我的查询太 富有表现力 我无法使用 Criteria 就像是 query Select from Ent if parameter null query WHERE fiel
  • 具有多种值类型的 Java 枚举

    基本上我所做的是为国家编写一个枚举 我希望不仅能够像国家一样访问它们 而且还能够访问它们的缩写以及它们是否是原始殖民地 public enum States MASSACHUSETTS Massachusetts MA true MICHI
  • 为什么 ConcurrentHashMap::putIfAbsent 比 ConcurrentHashMap::computeIfAbsent 更快?

    使用 ConcurrentHashMap 我发现computeIfAbsent 比putIfAbsent 慢两倍 这是简单的测试 import java util ArrayList import java util List import
  • tomcat 过滤所有 web 应用程序

    问题 我想对所有网络应用程序进行过滤 我创建了一个过滤器来监视对 apache tomcat 服务器的请求 举例来说 它称为 MyFilter 我在 netbeans 中创建了它 它创建了 2 个独立的目录 webpages contain
  • 如何使用 Mockito 和 Junit 模拟 ZonedDateTime

    我需要模拟一个ZonedDateTime ofInstant 方法 我知道SO中有很多建议 但对于我的具体问题 到目前为止我还没有找到任何简单的解决办法 这是我的代码 public ZonedDateTime myMethodToTest
  • OpenJDK 版本控制

    上下文 我想确保我们系统上安装的 Java 不受 CVE 2022 21449 的影响 java version 给出 openjdk version 11 0 7 2020 04 14 LTS OpenJDK Runtime Enviro
  • 来自客户端的超时 Web 服务调用

    我正在使用 RestEasy 客户端调用网络服务 一项要求是 如果调用运行时间超过 5 秒 则中止 超时调用 我如何使用 RestEasy 客户端实现这一目标 我只看到服务器端超时 即如果在一定时间内未完成请求 Rest Easy 网络服务
  • Java 编码风格、局部变量与重复方法调用

    我更喜欢使用局部变量而不是多次调用同一方法 I prefer this Vehicle vehicle person getVehicle if vehicle instanceof Car Car car Car vehicle car
  • c++/cli 终结器中免费 GCHandle 的最佳实践

    我在 c 中有一些函数 我会在 net 应用程序中使用它 为此 我用 C cli 编写了一个包装器类 C 接口中有一个回调函数 并将其包装在 net 委托中 但是我应该如何释放回调 gcHandle 的非托管资源呢 是否允许在终结器中从 G

随机推荐

  • 对 Yesod 中的 selectOneMany 感到困惑

    甜蜜但简单 持久连接是如何工作的 考虑以下模型 Person number Int numberOfEyes Int firstName FirstnamesId lastName LastnamesId Lastnames lastnam
  • 根据子字符串中的数字对字符串进行排序

    我有一个像这样的字符串 is2 Thi1s T4est 3a 我需要对其进行排序 所以 该数组看起来像这样 Thi1s is2 3a T4est 数字可以出现在字符串中的任何位置 我知道如何按字母顺序对字符串进行排序以及如何对数字数组进行排
  • 使用 openpyxl 复制整个工作表

    请有人给我一个例子 如何复制带有样式的整个工作表 从行和列 到同一工作簿中的第二个工作表 也可以在新的工作簿中 谢谢 P S 我尝试进行深度复制 但未能保存更改的数据单元格 目的是 我尝试用我的数据填充一些工作表 第一个工作表是我的模板 我
  • 如何在 Lisp 中将函数存储在变量中并使用它

    我想存储一个像这样的函数print在一个变量中 这样我就可以输入一些简短的内容 例如p e g In Scheme define print display print Hello world n alternate way define
  • 通过 RewriteCond 和 .htaccess 对 RewriteRule 进行分组

    我有一个网页模板 用于运行多个登陆页面 htaccess 用于将友好 URL 定向到 PHP 代码中的 pageid 这一切都有效 但目前我必须在每个规则或重定向冲突之前添加重写条件行 您可以在下面的伪代码中看到这一点 RewriteEng
  • DynamoDB 中的复合键具有超过 2 列?

    我正在探索在我所处理的应用程序中使用 DynamoDB 该应用程序目前只有一个数据库组件 在 RDS 上运行的 MySQL 数据库 我们大量使用 AWS 并为我们的数据库使用分片方案 但如果没有人工干预 它只能让我们到目前为止 在使用 Au
  • 在 Visual Studio 中显示构建时间

    我们的构建服务器构建 C 项目之一花费的时间太长 它用视觉工作室2008 跑步devenv com MyApp sln Build see devenv 命令行开关 尽管这是针对较新版本的 VS 有没有办法让 devenv com 记录在解
  • 如何根据表单状态隐藏普通按钮

    我试图隐藏我的保存vanilla根据表单状态按钮 当表单状态 创建时 不应显示普通按钮 我尝试了不同的方法 但没有任何作用 我在 js 中创建一个函数 如果表单处于创建状态 则返回 true function isHideState for
  • 以编程方式安装 APK - 返回值

    在我的应用程序中 我从我的活动中调用 javascript 接口 在与此界面关联的 web 视图中 我要求用户下载并安装 APK 我正在使用 startActivityForResult 来启动安装过程 下载文件后 这是代码 Intent
  • 游戏在快速从后台恢复后退出暂停状态

    我正在使用 SpriteKit 开发一个游戏 可以在执行期间暂停并可以恢复 但我有一个问题applicationDidEnterBackground当游戏暂停时按下主页按钮时 因为当我恢复游戏时 即使游戏之前已暂停 实体也会立即开始移动 我
  • android studio 禁用日期选择器中的天数

    我想禁用日期选择器中的某一天 我有一个数组存储我想要禁用的日期 我有这个代码来禁用日历中的日期 for Calendar loopdate min date c min date c before max date c min date c
  • 如何将原始电子邮件 (MIME) 从 AWS SES 转换为 Gmail?

    我有一个 Gmail 帐户链接到我的域帐户 AWS SES 会将消息发送到我的 S3 存储桶 从那里 SNS 将以原始格式将消息转发到我的 Gmail 地址 如何自动将原始消息转换为标准电子邮件格式 原始消息采用标准电子邮件格式 我认为您想
  • python 中的运算符重载,对象位于运算符右侧

    我最近了解了 python 中的运算符重载 我想知道以下内容是否可行 考虑以下假设 人为的类 class My Num object def init self val self val val def add self other num
  • C++ getline 方法不起作用

    抱歉 我对 C 很陌生 但一般不熟悉编程 所以我尝试做一个简单的加密 解密 然而 当我对以前的代码添加修改时 因此没有两个用于加密和解密的程序 我发现代码 getline 方法不再起作用 相反 它只是在运行代码时忽略它 这是代码 int m
  • 在 Google 自定义搜索中使用 TBS(或等效参数)

    使用时谷歌自定义搜索用于选择特定类型搜索引擎的 TBM 参数 例如 专利的 tbm pts 或博客的 tbm blg 似乎受到支持 尽管参数列表中没有正确记录这一点 然而 当使用这种 特殊 搜索时 通常会使用 TBS 参数来扩展查询 不幸的
  • 敏感的 ASP.NET Session 数据是否需要加密?

    ASP NET Session string key 数据是否需要加密才能安全 如果此类数据始终保留在服务器上 那么只要数据是通过 SSL 从客户端发送的 那么在那里存储信用卡信息 密码等是否就可以安全了 鉴于所有的反对票都投在这里 我将添
  • 在android中显示后台服务的弹出窗口

    您好 android 中可以显示后台运行服务的弹出对话框吗 答案是肯定的 我该怎么做 有几种选择 您可以使用主题并使活动的外观和行为类似于对话框 如这个问题 通过设置android theme你的属性
  • img 标签显示方向错误

    我在这个链接中有一张图片 http d38daqc8ucuvuv cloudfront net avatars 216 2014 02 19 2017 13 48 jpg 正如您所看到的 这是一个方向正确的正常图像 但是 当我将此链接设置为
  • 如何使用seaborn实现Lineplot,x轴为“日期”

    我尝试实现seaborn lineplot 数据框具有日期值列表作为索引 试图将其作为 x 轴 Dataframe info 将 日期 字段显示为对象 我需要以日期为 x 轴的 4 种类型的列值的线图 当我尝试执行下面的代码时 它显示错误消
  • 为什么从 java 9 PhantomReference java doc 开始,它就专门用于 POST-mortem 清理操作,尽管它之前是 PRE-mortem

    PhantomReference java 8 的 java 文档更少看起来像这样 幻像引用对象 在收集器之后排队 确定它们的引用对象可以以其他方式被回收 幻影 参考最常用于调度事前清理 行动以比 Java 更灵活的方式 最终确定机制 如果