关于WeakhashMap与HashMap之间的区别和联系
package collection;
import java.lang.ref.PhantomReference;
import java.lang.ref.ReferenceQueue;
import java.lang.ref.SoftReference;
import java.lang.ref.WeakReference;
import java.util.HashMap;
import java.util.WeakHashMap;
class MyArray{
byte[] bytes = new byte[3*1024*1024]; //即占用3M
}
class Test{
}
public class TestReference {
public static void main(String[] args) {
// //引用队列
// //将软引用对象关联成一个key值,添加到队列里,遍历 队列中每个元素分别找到其在 HashMap里的位置,然后把结点(key,value)完全删除掉
// ReferenceQueue
// //创建一个软引用对象
// SoftReference
// //获取软引用对象(softReference)
// System.out.println(softReference.get());
// //判断是否被回收(true 被回收 入到队列)
// System.out.println(softReference.isEnqueued());
// // -Xms3M -Xmx5M 即初始给堆3M空间,最大是5M空间 右键-》 run configurations——》设置虚拟机参数
// //System.gc();//可模拟垃圾回收
// byte[] array = new byte[3*1024*1024];
//
// System.out.println(softReference.get());
// System.out.println(softReference.isEnqueued());
// // 弱引用对象
// ReferenceQueue
// WeakReference
//
// System.out.println(weakReference.get());
// System.out.println(weakReference.isEnqueued());
//
// System.gc();
//
// System.out.println(weakReference.get());
// System.out.println(weakReference.isEnqueued());
//
// //虚引用对象
// ReferenceQueue
// PhantomReference
// //进程的执行,需要线程的支持
// //垃圾回收作为一个线程(等CPU分配时间片)支持虚拟机的执行
// //JDK(或虚拟机)里垃圾回收线程是随机启动的,调用 System.gc();可以手动回收
// System.gc();
// if(phantomReference.isEnqueued()){
// System.out.println("该对象已经被回收");
// }else{
// System.out.println("该对象已经被回收");
// }
}
}