A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张涛的狂怒 于 2014-8-6 10:00 编辑

weakmap是弱引用类,即对象不使用就会被GC自动清理
运行下面一段代码发现,前三个被回收了,但是最后一个没有被回收。这是为什么?
map.put(new<E>( ),new<E>( ))与map.put(  ,  )有什么区别?
public class WeakHashmapDemo {
        public static void main(String[] args){
                //实例化Map对象
                Map <String,String> map=new WeakHashMap <String,String> ();
               
                map.put(new String("10"), new String("aaa1"));
                map.put(new String("18"), new String("ab1"));
                map.put(new String("14"), new String("aca1"));
                map.put("-4", "brb11");
               
                //进行垃圾回收
                System.gc();
                System.out.println(map);
        }
}

4 个回复

倒序浏览
weakmap是弱引用类,即集合不使用就会自动清理
map其他子类中的数据是强引用类,即内存不足时,JVM出现outofMemeryError也不会回收数据
软引用 :即内存不足时,JVM会回收数据
虚引用:和没有任何引用一样
回复 使用道具 举报
都没人理呢
回复 使用道具 举报
人都干嘛去了,是不是太简单了???
回复 使用道具 举报
在你这段代码里,加不加都不会有区别的。一开始定义的时候,你已经用了泛型了啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马