1.关键代码与运行结果:
//强引用
Handler handler=new Handler();
//软引用
Handler softHandler=new Handler();
SoftReference<Handler> handlerSoftReference=new SoftReference<>(softHandler);
System.out.println(TAG+"soft="+handlerSoftReference.get());
softHandler=null;
System.gc();
System.out.println(TAG+"soft="+handlerSoftReference.get());
//弱引用
Handler weakHandler=new Handler();
WeakReference<Handler> handlerWeakReference=new WeakReference<>(weakHandler);
System.out.println(TAG+"weak="+handlerWeakReference);
handlerWeakReference=null;
System.out.println(TAG+"weak="+handlerWeakReference);
运行结果:

2.引用类型:
注意:一个对象可能被多种引用(不止一种,可能多种):此时执行gc(堆回收),都不为空


只有一种引用的时候,

3.引用类型的简单使用
1.强引用
1.简单使用:
Handler handler=new Handler();
2.被回收情况:GC执行不回收

2.软引用
1.简单使用
//软引用
Handler softHandler=new Handler();
SoftReference<Handler> handlerSoftReference=new SoftReference<>(softHandler);
System.out.println(TAG+"soft="+handlerSoftReference.get());
softHandler=null;
System.gc();
System.out.println(TAG+"soft="+handlerSoftReference.get());
2.被回收情况:GC执行时,发现内存块溢出了(内存溢出前)回收

3.弱引用
1.简单使用
//弱引用
Handler weakHandler=new Handler();
WeakReference<Handler> handlerWeakReference=new WeakReference<>(weakHandler);
System.out.println(TAG+"weak="+handlerWeakReference);
handlerWeakReference=null;
System.out.println(TAG+"weak="+handlerWeakReference);
2.被回收情况:被GC执行就回收

本文深入探讨了Java中四种引用类型(强引用、软引用、弱引用、虚引用)的基本概念及使用场景。通过实例演示了不同引用类型在垃圾回收过程中的行为表现,帮助读者理解如何合理运用这些引用类型来避免内存泄漏。
1411

被折叠的 条评论
为什么被折叠?



