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");//这个在堆里创建的,所以可以被回收