一、强引用:
正常的new出对象被引用指向就是强引用。可直接通过引用操纵对象。gc不会回收被强引用指向的对象,除非引用等于null
二、软引用
new出SoftReference在它的构造方法里嵌套别的对象
1、m指向sr强引用,sr对象指向字节数组软引用。每次gc并不会主动清理软引用,只有当有其他强引用进来,并且堆区空间不够了则才会被清理。可以通过引用.get方法获取嵌套的对象
2、作用:用于缓存,把一些经常用的设为软引用(让SoftReference里嵌套要用到的东西),这样它就不会被gc回收掉,可以被经常使用。而且当内存不够时,它可以随时被其他强引用干掉
三、弱引用
new出WeakReference在它的构造方法里嵌套别的对象
1、内存图如上。只要垃圾回收启动一定会被回收。可以通过引用.get方法获取嵌套的对象
2、作用:在ThreadLocal中防止内存泄露(详见多线程专栏的ThreadLocal)
四、虚引用
new出PhantomReference在它的构造方法里嵌套别的对象
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/153414.html