ToB企服应用市场:ToB评测及商务社交产业平台

标题: PhantomReference 和 WeakReference 究竟有何不同 [打印本页]

作者: 伤心客    时间: 2024-6-19 21:17
标题: PhantomReference 和 WeakReference 究竟有何不同
本文基于 OpenJDK17 进行讨论,垃圾回收器为 ZGC。
提示: 为了方便各人索引,特将在上篇文章 《以 ZGC 为例,谈一谈 JVM 是如何实现 Reference 语义的》 中讨论的众多主题独立出来。
PhantomReference 和 WeakReference 假如仅仅从概念上来说其实很难区别出他们之间究竟有何不同,比如, PhantomReference 是用来跟踪对象是否被垃圾回收的,假如对象被 GC ,那么其对应的 PhantomReference 就会被参加到一个 ReferenceQueue 中,这个 ReferenceQueue 是在创建 PhantomReference 对象的时候注册进去的。
我们在应用程序中可以通过检查这个 ReferenceQueue 中的 PhantomReference 对象,从而可以判断出其引用的 referent 对象已经被回收,随即可以做一些开释资源的工作。
[code]public class PhantomReference extends Reference { public PhantomReference(T referent, ReferenceQueue




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4