public class Demo04 { public static void main(String[] args) { //字符串常量池共享,不能回收 String str="You Are My Sunshine!"; //用弱引用来管理该字符串 WeakReference<String> wek=new WeakReference<String>(str); System.out.println("gc运行前:"+wek.get()); str=null; //通知gc运行 System.gc(); //开始回收 System.runFinalization(); System.out.println("gc运行后:"+wek.get()); } } 输出结果: gc运行前:You Are My Sunshine! gc运行后:You Are My Sunshine!
弱引用示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
public class Demo04 { public static void main(String[] args) { //这里下面这一句产生了两个对象,指向常量池里那个是强的。这个只是指向那个指向常量池对象的对象 String str=new String("You Are My Sunshine!"); //用弱引用来管理该字符串 WeakReference<String> wek=new WeakReference<String>(str); System.out.println("gc运行前:"+wek.get()); str=null; //通知gc运行 System.gc(); //开始回收 System.runFinalization(); System.out.println("gc运行后:"+wek.get()); } } 输出结果: gc运行前:You Are My Sunshine! gc运行后:null