java 的引用学习

1.引用的分类:

强引用
软引用
弱引用
虚引用(未学)
在这里插入图片描述

        //强引用:“=”这个连接的
        String str="abc";//常量池里面
        //软引用
        SoftReference<String> sfr=new SoftReference<String>(str);

        //弱引用
        WeakReference<String> wfr=new WeakReference<String>(str);

判断是可及性:对象的可及性由最强引用类型来决定

1.强引用:

在这里插入图片描述
强引用:不会被GC回收,
在这里插入图片描述

2.软可及

干掉强引用

        //干掉强引用
        str=null;

剩下软、弱引用,此时就是软可及

在这里插入图片描述
软引用:系统内存不足时,被GC回收

弱可及:

干掉,强引用,软引用,就剩下弱引用

//清除软引用的引用链
        sfr.clear();

在这里插入图片描述
弱引用:GC发现他的时候,就把它回收

验证弱引用被GC回收

方法:

String str="abc";//这个常量池里面

GC回收的是堆内存
所以执行System.gc()不能回收在常量池里的东西,要创建一个在堆内存的字符串才能被回收

String str=new String("abc");//这个在堆里创建的,所以可以被回收

猜你喜欢

转载自blog.csdn.net/sunweihao2019/article/details/109222582