java集合WeakHashMap测试

import java.util.*;
/**
 * WeakHashMap:一个weak key的Map,
 * 是为某些特殊问题而设计的。它能让Map释放其所持有的对象。
 * 如果某个对象除了在Map当中充当键之外,
 * 在其他地方都没有引用的话,那它将被当作垃圾回收。
 */
public class WeakHashMapTest
{
    public static void main(String[] args)
    {
        //
        WeakHashMap whm = new WeakHashMap();
        
        //放入两个没有外部引用的键值对
        whm.put(new String("语文") , new String("良好"));
        whm.put(new String("数学") , new String("及格"));
        System.out.println("原有的集合元素:whm="+whm);//whm={数学=及格, 语文=良好}
        //key语文和数学,没有外部的引用指向它
        //垃圾回收器会回收调这两个键值对key-value  
        //语文--良好,数学--及格
        // 通知系统立即进行垃圾回收,
        System.gc();
        System.runFinalization();
      //垃圾回收器把集合中这两个没有外部引用的键值对释放掉
        System.out.print("垃圾回收器,回收没有外部引用的WeakHashMap集合元素: whm="+whm+"\n");//whm={}
        System.out.println("-------------------------------");
        String yy = new String("英文");
        whm.put(yy , new String("中等"));//放入有外部引用的键值对的
        System.out.println("whm="+whm);//whm={英文=中等}
        // 通知系统立即进行垃圾回收
        System.gc();
        System.runFinalization();
        System.out.println("有外部引用指向的集合元素,垃圾回收器不会回收:");
        System.out.println("whm="+whm);//whm={英文=中等} 有外部引用不回收
        
        yy=null;//把外部引用置空
        System.out.println("外部引用置空后:");
        System.gc();
        System.runFinalization();
        System.out.println("whm="+whm);
        System.out.println("-------------------------------");
        whm.put("java" , new String("中等"));//key "java" 在常量区,垃圾会收器回收不到
        System.out.println(whm);
        System.gc();
        System.runFinalization();
        System.out.println("垃圾回收器无法通过常量区的键回收:");
        System.out.println(whm);
        
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值