Java EE 编程中使用弱引用和软引用的地方
我是 Java EE 开发人员,但我不知道日常编程在哪里 人们可能会使用弱引用或软引用。
I am Java EE developer but I don't know where in day to day programming
one might use Weak or Soft references.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
有很多很好的参考资料(很好的双关语!),我建议你谷歌一下 Bob Lee,“虚拟机中的幽灵”。
简而言之,一个
SoftReference 有时作为快速而脏的缓存很有用,但它们并不是那么有用。
WeakRefence 不用于缓存,但您的侦听器列表绝对应该使用它们,以便不需要的侦听器可以被垃圾收集。
There are many good references (nice pun!) and I suggest you Google Bob Lee, "the ghost in the virtual machine."
In a nutshell, a
SoftReference is occasionally useful as a quick and dirty cache, but they aren,t that useful.
WeakRefences are not for caching, but your listener lists should definitely use them so that unneeded listeners can be garbage collected.
您通常不会在日常编程中使用它们(至少我不会,而且我认为我们大多数人都不会),但它们可能非常有用!
对我来说,实际场景是:
用于调试目的的 WeakReference(例如跟踪打开的数据库连接)。
SoftReference 用于快速而脏的缓存(例如,缓存创建“昂贵”且不应立即清理的大型 java POJO)。
我认为 PhantomReference 确实不切实际。
You don't not normally use them in day to day programming (at least i don't and i think most of us don't) but they can be very useful!
practical scenarios for me would be:
WeakReference for debugging purpose (e.g. keep track of open database connections).
SoftReference for a quick and dirty cache (e.g. caching large java POJOs that are "expensive" to create and should not be cleaned up immediately).
PhantomReference is really impracticable in my opinion.