首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >关于Phantom Referenced Objects

关于Phantom Referenced Objects
EN

Stack Overflow用户
提问于 2019-03-20 23:50:04
回答 2查看 0关注 0票数 0

Java规范规定,在清除幻像引用本身之前,不会释放幻像引用的对象

我的问题是:此功能(对象未解除分配)的用途是什么?

(我提出的唯一想法是允许本机代码对对象进行事后清理,但这并不是很有说服力)。

EN

回答 2

Stack Overflow用户

发布于 2019-03-21 08:02:46

我能想到的唯一一个可以防止重新分配的好用例是某种JNI实现的异步数据源写入引用的对象,必须告诉它要停下来 - 停止写入对象 - 在记忆被回收之前。如果允许先前的释放,则一个简单的忘记处置()错误可能导致内存损坏。

这是过去使用finalize()的情况之一,并可能引发了一些问题。

票数 0
EN

Stack Overflow用户

发布于 2019-03-21 09:40:25

我认为这个想法是让其他对象在原始对象之外进行额外的清理。例如,如果原始对象无法扩展以实现某些终结内容,则可以使用幻像引用。

更大的问题是JVM不能保证一个对象永远不会被最终确定,并且我认为不能保证幻像引用能够在完成后完成它们的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100001013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档