码迷,mamicode.com
首页 > 其他好文 > 详细

强引用、软引用、弱引用、虚引用——4中引用的理解

时间:2021-01-05 11:09:07      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:tar   null   作用   alt   shm   ant   方法   对象   软引用   

技术图片

 

 

 

1.强引用(Reference):默认使用的就是强引用,不会被GC,即使报OOM也不会被GC

Object o = new Object();//默认就是强引用,一般使用这种

2.软引用(SoftReference):当内存不够时,才能被GC回收,内存足够是不会被回收

3.弱引用(WeakReference):不管内存够不够,只要GC就会被回收,事例如下

public static void main(String[] args) {
        Object o = new Object();
        WeakReference reference = new WeakReference(o);
        System.out.println(reference.get());

        System.out.println("===================");
        o = null;//给o赋值为空,目的是使上面new出来的Object对象除了弱引用以外没有其他引用
        System.gc();
        System.out.println(reference.get());
}

打印结果:

Connected to the target VM, address: ‘127.0.0.1:56868‘, transport: ‘socket‘
java.lang.Object@35851384
===================
null
Disconnected from the target VM, address: ‘127.0.0.1:56868‘, transport: ‘socket‘

可以看出,只要GC,弱引用类的对象就会被回收

弱引用中,可以牵扯出WeakHashMap,这个map的key具有弱的特性,只要GC,key就会被回收,对应的entry就会被移除

4.虚引用(PhantomReference):形同虚设,不管有没有GC,get()方法总是取不到值,一般要和引用队列(ReferenceQueue)连用,在GC时,系统会先将PhantomReference丢进队列里,监控对象回收情况(也只有这么点作用)

总结:软、弱引用一般用在内存作为缓存中,Mybatis缓存的底层就是用的软引用

强引用、软引用、弱引用、虚引用——4中引用的理解

标签:tar   null   作用   alt   shm   ant   方法   对象   软引用   

原文地址:https://www.cnblogs.com/yayin/p/14220436.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!