微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java中不同引用类型的使用

我最近一直在玩 Java中的soft,weak和phantom引用类型,并且一直在想是否有任何用途,我还没有遇到过.我过去曾经使用它们来处理各种事情,它们总是属于以下类别:

>使用幻像引用代替终结器 – 我更喜欢这个,因为死对象有0次复活的可能性
>使用散列映射中的弱引用来保存object =>值映射,其中映射应该仅在其他地方存在对象时才有效(在需要向库中的对象添加额外信息时很有用,例如其源可以’被修改)
>使用软引用进行缓存(比弱引用要好得多,因为JVM可以将它们保留更长时间,只有在感觉需要时才会使用.)

然而,那里只有3种用途,我敢说有很多东西可能对我有用而且我从来没有遇到过.欢迎所有建议!

解决方法

两个奇怪的想法:

>您可以使用软引用来查找内存不足并手动释放一些本身无法使用软引用的缓存.
>您可以使用弱引用来查找GC何时运行,这可能对您遇到可能与GC相关或可能与GC无关的奇怪程序暂停有用.

恕我直言,在一些(罕见的)情况下,弱引用对于缓存可能更好,例如,您可能弱地引用值,一旦它们从使用它们的结构中移除(即,它们变得强烈不可达),则不可能再次需要它们.此外,JVM中有一个关于软引用的严重bug,这可能会迫使您这样做.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐