People p1 = new People();//强引用,在程序代码中普遍存在,只要引用还在,GC永远不会回收掉被引用的对象
People p = null;
SoftReference<People> sa = new SoftReference<People>(p);
p = sa.get();//软引用,在系统即将发生内存溢出前,gc可能会向操作系统申请更多内存,
//而不是直接回收它,当实在没辙了才回收它,像cache系统,最适合用Soft reference
WeakReference<People> a = new WeakReference<People>(p);
WeakHashMap<String, Object> whm = new WeakHashMap<String, Object>();
whm.put("p1", p1);
//WeakHashMap,它的使用和普通的HashMap完全一样,不同点在于,WeakHashMap的key被实现为一种WeakReference(注意,是key而不是value)
//,当key对象被回收后,WeakHashMap会自动将对应的entry移除。更精确的说,对于一个给定的键,其映射的存在并不阻止垃圾回收器对该键的回收。
p = a.get();//一旦gc发现对象是weak reference可达就会把它放到ReferenceQueue中,然后等下次gc时回收它
People p = null;
SoftReference<People> sa = new SoftReference<People>(p);
p = sa.get();//软引用,在系统即将发生内存溢出前,gc可能会向操作系统申请更多内存,
//而不是直接回收它,当实在没辙了才回收它,像cache系统,最适合用Soft reference
WeakReference<People> a = new WeakReference<People>(p);
WeakHashMap<String, Object> whm = new WeakHashMap<String, Object>();
whm.put("p1", p1);
//WeakHashMap,它的使用和普通的HashMap完全一样,不同点在于,WeakHashMap的key被实现为一种WeakReference(注意,是key而不是value)
//,当key对象被回收后,WeakHashMap会自动将对应的entry移除。更精确的说,对于一个给定的键,其映射的存在并不阻止垃圾回收器对该键的回收。
p = a.get();//一旦gc发现对象是weak reference可达就会把它放到ReferenceQueue中,然后等下次gc时回收它