Java WeakHashMap

简介:

package com.test;  

import java.util.HashMap;  

import java.util.Iterator;  

import java.util.Map;  

import java.util.WeakHashMap;  

public class Weakhashmap {  

public static void main(String[] args) {  

       String a = new String("a");    

       String b = new String("b");


       Map weakmap = new WeakHashMap();    

       Map map = new HashMap();


       map.put(a, "aaa");    

       map.put(b, "bbb");    

       weakmap.put(a, "aaa");    

       weakmap.put(b, "bbb");  


    /**

        * map remove a 之后,

        * weakmap的KEY都是WeakReference的.

        * 因为b对象还在被map引用,所以没被GC回收.

        * 可是a对象则已经被map remove, 所以GC会回收weakmap的a KEY

        * VALUE在KEY清除后, 访问WeakHashMap时会自动被清除.

        */

       map.remove(a);

       a=null;

       b=null;

       System.gc();


       Iterator i = map.entrySet().iterator();    

     while (i.hasNext()) {    

           Map.Entry en = (Map.Entry)i.next();    

           System.out.println("map:"+en.getKey()+":"+en.getValue());    

       }    

       Iterator j = weakmap.entrySet().iterator();    

     while (j.hasNext()) {    

           Map.Entry en = (Map.Entry)j.next();    

           System.out.println("weakmap:"+en.getKey()+":"+en.getValue());

      }    

   }  

}



本文转自chainli 51CTO博客,原文链接:http://blog.51cto.com/lichen/1200455,如需转载请自行联系原作者
相关文章
|
Java 开发者
Java WeakHashMap
put方法也很简单,用key的hashcode在tab中定位,然后判断是否是已经存在的key,已经存在就替换旧值,否则就新建Entry,遇到多个不同的key有同样的hashCode就采用开链的方式解决hash冲突。注意这里和HashMap不太一样的地方,HashMap会在链表太长的时候对链表做树化,把单链表转换为红黑树,防止极端情况下hashcode冲突导致的性能问题,但在WeakHashMap中没有树化。
41 0
|
存储 缓存 Java
Java的WeakHashMap:理解弱引用与垃圾回收
本文将介绍WeakHashMap的原理和用途,并结合代码示例演示如何在Java中利用WeakHashMap实现自动资源管理和缓存清理。
|
存储 缓存 Java
Java中的引用类型(强引用、软引用、弱引用、虚引用)介绍,示例WeakHashMap的使用【享学Java】(下)
Java中的引用类型(强引用、软引用、弱引用、虚引用)介绍,示例WeakHashMap的使用【享学Java】(下)
Java中的引用类型(强引用、软引用、弱引用、虚引用)介绍,示例WeakHashMap的使用【享学Java】(下)
|
存储 Java
Java中的引用类型(强引用、软引用、弱引用、虚引用)介绍,示例WeakHashMap的使用【享学Java】(上)
Java中的引用类型(强引用、软引用、弱引用、虚引用)介绍,示例WeakHashMap的使用【享学Java】(上)
Java中的引用类型(强引用、软引用、弱引用、虚引用)介绍,示例WeakHashMap的使用【享学Java】(上)
|
缓存 Java
Java中的引用类型(强引用、软引用、弱引用、虚引用)介绍,示例WeakHashMap的使用【享学Java】(中)
Java中的引用类型(强引用、软引用、弱引用、虚引用)介绍,示例WeakHashMap的使用【享学Java】(中)
|
存储 缓存 Java
【Java入门提高篇】Day34 Java容器类详解(十五)WeakHashMap详解
在Java容器详解系列文章的最后,介绍一个相对特殊的成员:WeakHashMap,从名字可以看出它是一个 Map。它的使用上跟HashMap并没有什么区别,所以很多地方这里就不做过多介绍了,可以翻看一下前面HashMap中的内容。
1252 0
|
Java
java源码-WeakHashMap
开篇  作为Map系列的最后一篇,我觉得有必要讲讲WeakHashMap这个类,因为这个类可以解决一些oom的问题,典型的场景是在一个HashMap中put不同的key/value对象,如果此时设置key为null而未清除map当中的key对象,那么就无法通过gc回收该对象。
1023 0
|
安全 Java 容器
|
Java
WeakHashMap和Java引用类型详细解析
WeakHashMap是种弱引用的HashMap,这是说,WeakHashMap里的key值如果没有外部强引用,在垃圾回收之后,WeakHashMap的对应内容也会被移除掉。 1.1 Java的引用类型 在讲解WeakHashMap之前,我们需要了解Java中引用的相关类: ReferenceQueue,引用队列,与某个引用类绑定,当引用死亡后,会进入这个队列。
1257 0
下一篇
无影云桌面