开发者社区> 技术mix呢> 正文

WeakHashMap

简介:
+关注继续查看

WeakHashMap
今天在具体业务的时候看到HashMap和WeakHashMap的区别。因为PHP语言并没有这种概念。所以很好奇做了一下研究。

WeakHashMap
WeakHashMap所谓的“弱”是针对GC来说的。换句话说,GC操作的时候,会不会自动去回收掉WeakHashMap中已经没有被引用的数据?它的规则是这样的:如果WeakHashMap中的key是一个变量,并且这个变量没有被引用了。那么这个时候,系统gc的时候,就会把这个没有引用的HashMap的key,value删除。

具体看下面的代码:

/*

  • To change this license header, choose License Headers in Project Properties.
  • To change this template file, choose Tools | Templates
  • and open the template in the editor.
    */

package com.mycompany.demo;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.WeakHashMap;

/**
*

  • @author yejianfeng
    */

public class hashmap {

public static void main(String[] args){
    String a = new String("a");  
    String b = new String("b");  
    Map weakmap = new WeakHashMap();  

    weakmap.put(a, "aaa");  
    weakmap.put(b, "bbb");  

    a=null;  

    System.gc();  
    Iterator j = weakmap.entrySet().iterator();  
    while (j.hasNext()) {  
        Map.Entry en = (Map.Entry)j.next();  
        System.out.println("weakmap:"+en.getKey()+":"+en.getValue());   // weakmap:b:bbb

    }  
}  

}
上面的只是把a对象去掉引用,就相当于告诉gc可以进行回收了。

WeakHashMap中的具体Entry实现了WeakReference的接口,在put数据进入HashMap的时候把queue传递进去了。ReferenceQueue是WeakHashMap创建的一个Reference队列。当gc回收Entry的key的时候,就会把消息通知到这个队列中,然后这个hash就知道了这个key被删除了,同时就会把这个key对应的Entry进行删除了。

本文转自轩脉刃博客园博客,原文链接:http://www.cnblogs.com/yjf512/p/7413236.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
RPC框架(1 - 实现服务端注册一个服务)
RPC框架(1 - 实现服务端注册一个服务)
4 0
轻量级RPC框架(0 - 项目概述)
轻量级RPC框架(0 - 项目概述)
4 0
python中的迭代对象、迭代器、生成器
在python中对于list和tuple,有很多的方式得到里面的元素,如果要输出里面的所有元素,可以采用for循环的形式,得到list或tuple中的每个元素,这就是迭代,凡是能够进行for循环的对象就是可迭代对象。 在java中的迭代方式有两种,一种直接for循环,一种采用迭代器 for循环的使用:
5 0
算法必知 --- 归并排序(优化与案例)
算法必知 --- 归并排序(优化与案例)
4 0
+关注
2968
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载