
好,首先我们来看一下这里,给大家写了一个testSoftReference。
public void testSoftReference(){
User user = new User(1, "Andy");
//user对象保存在软引用里面
SoftReference userSoft = new SoftReference(user);
user = null;//干掉强引用
System.out.println(userSoft.get());//取user对象
System.gc();//调用gc回收内存
System.out.println("After gc");
System.out.println(userSoft.get());
//向堆中填充数据,导致OOM
List list = new linkedList<>();
try{
for (int i=0; i<100; i++){
System.out.println("for====="+userSoft.get());
list.add(new byte[1024*1024*1]);//添加1M(兆)的byte数组
}
}catch (Throwable e){
Syst