我是靠谱客的博主 寒冷冬日,最近开发中收集的这篇文章主要介绍java 弱引用 集合_Java中的弱引用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Strong references

StringBuffer buffer = new StringBuffer();

普通的对象创建都是这种类型,只要buffer还存在,对象就不会被GC回收。同时也会造成一定的问题,比如:向HashMap添加这些对象的句柄时,保存一个图片的缓存的时候,他们都不会自动清除

Weak references

ReferenceQueue wrq = new ReferenceQueue();

WeakReference ws = new WeakReference(s2, wrq);

一个弱引用不能阻止GC回收其对象指向的内存,所有有时候通过handle.get()会返回NULL。有一个专门的WeakHashMap,不会因为键的存在,而阻止对象的回收。适合做集合的存储

Soft references

ReferenceQueue srq = new ReferenceQueue();

SoftReference ss = new SoftReference(s1, srq);

只有当内存不够的时候才会用Weak Reference的方式回收,不会导致OOM,所以适合做缓存

Phantom references

ReferenceQueue prq = new ReferenceQueue();

PhantomReference ps = new PhantomReference(s3, prq);

WeakReference是先把句柄放入Rference Queue,这些是在GC之前,理论上可以在finalized的时候被复活。Phantom reference只有在对象被收回以后才会放入reference queue

可以用来标记什么时候对象被销毁,也可以用来保证对象不在GC时复活。

参考:

http://docs.oracle.com/javase/7/docs/api/java/util/WeakHashMap.html

https://community.oracle.com/blogs/enicholas/2006/05/04/understanding-weak-references

http://my.oschina.net/sulliy/blog/482101

最后

以上就是寒冷冬日为你收集整理的java 弱引用 集合_Java中的弱引用的全部内容,希望文章能够帮你解决java 弱引用 集合_Java中的弱引用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部