WeakHashMap 理解笔记
An entry in a WeakHashMap will automatically be removed when its key is no longer in ordinary use. More precisely,
the presence of a mapping for a given key will not prevent the key from being discarded by the garbage collector,
that is, made finalizable, finalized, and then reclaimed.When a key has been discarded its entry is effectively removed
from the map。
在 WeakHashMap 中,当某个key不再正常使用时,将自动移除其entry。更精确地说,对于一个给定的键,其映射的存在并不阻止垃圾
回收器对该键的丢弃,使该键成为可终止的,被终止,然后被回收。丢弃某个key时,其entry从map中有效地移除。
public class Test01 {
public static void main(String[] args) throws Exception {
String a = new String("a");
String b = new String("b");
Map<String,String> weakmap = new WeakHashMap<String,String>();
weakmap.put(a, "aaa");
weakmap.put(b, "bbb");
Map<String,String> map = new HashMap<String,String>();
map.put(a, "aaa");
map.put(b, "bbb");
map.remove(a);
a=null;
b=null;
System.gc();
System.out.println("----------HashMap----------");
for(Map.Entry<String, String> mEntry: map.entrySet()){
System.out.println(mEntry.getKey()+":"+mEntry.getValue());
}
//对于a,当HashMap remove掉并且将a指向null后,
//除了WeakHashMap中还保存a外已经没有指向a的指针了,所以WeakHashMap会自动舍弃掉a
//而对于b虽然指向了null,但HashMap中还有指向b的指针,所以WeakHashMap将会保留b
System.out.println("----------WeakHashMap----------");
for(Map.Entry<String, String> mEntry: weakmap.entrySet()){
System.out.println(mEntry.getKey()+":"+mEntry.getValue());
}
}
}
执行结果为:
----------HashMap----------
b:bbb
----------WeakHashMap----------
b:bbb
需要注意的是:
1.The behavior of the WeakHashMap class depends in part upon the actions of the garbage collector。WeakHashMap 类的行为部分取决于
垃圾回收器的动作。所以在第18行调用了System.gc()。如果去掉这行,则结果为:
----------HashMap----------
b:bbb
----------WeakHashMap----------
a:aaa
b:bbb
2.如果把第13行map.remove(a)去掉,则结果为:
----------HashMap----------
b:bbb
a:aaa
----------WeakHashMap----------
a:aaa
b:bbb
WeakHashMap 理解笔记的更多相关文章
- batch normalization学习理解笔记
batch normalization学习理解笔记 最近在Andrew Ng课程中学到了Batch Normalization相关内容,通过查阅资料和原始paper,基本上弄懂了一些算法的细节部分,现 ...
- 深度学习-InfoGAN论文理解笔记
在弄清楚InfoGAN之前,可以先理解一下变分推断目的以及在概率论中的应用与ELBO是什么,以及KL散度 https://blog.csdn.net/qy20115549/article/detail ...
- cookie&&session再理解笔记
就拿php来说,两个php页面之间不拿get,post传递变量的话,数据是不能共享的.访问完1.php页面该页面的变量就被销毁了.所以就拿学校食堂来说,拿现金买饭的话你交完钱后,他给你个票以便确认你, ...
- bundle的理解笔记
Bundle是一个键值对这样一个东西.就是一个string类型的东西,对应任何类型的东西.就是用来存值的. 这里可以看到他的作用 public void onClick(View v) { Strin ...
- 对socket的一点理解笔记
需要学web service,但是在视频中讲解到了socket套接字编程.以前貌似课上老师有提过,只是没用到也感觉乏味.现在遇到,自己看了些博客和资料.记录一点理解,不知正确与否. 首先说这个名字,叫 ...
- WeakHashMap理解
WeakHashMap实现了Map接口,是HashMap的一种实现,他使用弱引用作为内部数据的存储方案,WeakHashMap可以作为简单缓存表的解决方案,当系统内存不够的时候,垃圾收集器会自动的清除 ...
- JMS学习的个人理解笔记
Jms即java消息服务javamessage service,所谓的面向消息编程,主要应用在企业内部各个系统之间做接口,以异步方式传递消息数据. Jms有2种传送模式,先来看第一种,即点对点传送模式 ...
- hive的简单理解--笔记
Hive的理解 数据仓库的工具 Hive仅仅是在hadoop上面包装了SQL: Hive的数据存储在hadoop上 Hive的计算由MR进行 Hive批量处理数据 Hive的特点 1 可扩展性(h ...
- 目标检测 anchor 理解笔记
anchor在计算机视觉中有锚点或锚框,目标检测中常出现的anchor box是锚框,表示固定的参考框. 目标检测的任务: 在哪里有东西 难点: 目标的类别不确定.数量不确定.位置不确定.尺度不确定 ...
随机推荐
- log4net按照不同的级别输出到不同文件
配置目标: 1)一个文件记录全部级别的日志: 2)记录某一级别的日志(使用LevelRangeFilter进行级别的过滤). Eg: <log4net> <appende ...
- cocos2d ccmenulabel
// // TestMenu.hpp // mario // // Created by sun on 15/12/22. // // #ifndef TestMenu_hpp #define Tes ...
- lua ipairs
tbl = {"alpha", "beta", ["one"] = "uno", ["two"] = ...
- BZOJ3789 : 扫雪车
有上下界的网络流 T向S连容量为正无穷的边,将有源汇转化为无源汇 每条边容量减去下界,设in[i]表示流入i的下界之和减去流出i的下界之和 新建超级源汇SS,TT 对于in[i]>0的点,SS向 ...
- TYVJ P1046 Blast Label:dp
描述 设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为“abcbcd”,则字符串“abcb□cd”,“□a□bcbcd□”和“abcb□cd□”都是X的扩 ...
- 【BZOJ】1180: [CROATIAN2009]OTOCI & 2843: 极地旅行社(lct)
http://www.lydsy.com/JudgeOnline/problem.php?id=1180 今天状态怎么这么不好..................................... ...
- 【wikioi】1049 棋盘染色(迭代深搜)
http://www.wikioi.com/problem/1049/ 这题我之前写没想到迭代加深,看了题解,然后学习了这种搜索(之前我写的某题也用过,,但是不懂专业名词 囧.) 迭代加深搜索就是限制 ...
- CentOS 实现自动登陆
1. 在ssh-client一边使用ssh-keygen生成一对rsa key $ssh-keygen -t rsa 2. 在ssh-client一边使用ssh-add将刚生成的private key ...
- jQuery.Validate验证库详解
一.用前必备官方网站:http://bassistance.de/jquery-plugins/jquery-plugin-validation/ API: http://jquery.bassist ...
- [HihoCoder] Highway 高速公路问题
Description In the city, there is a one-way straight highway starts from the northern end, traverses ...