WeakHahMap,HashMap和(垃圾回收)Gc
1.HashMap的问题:
public class testHashMap{
public static HashMap map;
public static void main(String[] args){
addItem();
//下面如何得到放入HashMap的值 tempValue?
//问题代码:map.get(tempKey)?
}
public static void addItem(){
//下面这句必须是new,如果仅仅是常量,则在map中仍然可以引用它。
String tempKey=new String("test1");
//下面这句可以不new
String tempValue=new String("123");
map.put(tempKey,tempValue);
}
}
更严重的问题是,很多人以为垃圾回收器会去回收HashMap中无用的键?其实不会!!!
2.Java Core Code中提到的解决方案:
WeakHashMap
它回去回收无用的键和值。
3.WeakHashMap的问题:
如果一个键真的是有用呢?而且仅仅是它对应的值在引用它!!
伪代码:
class A{
String id;
public A(String id){
id=id;
}
}
class Test{
public static void addItem(){
String id=new String("abc");
A a=new A(id);
//关键地方:
map.put(a.id,a);
}
}
垃圾回收器仍然不去回收这个无用的键和值。
//结论:
1.HashMap 的键最好使用Const String,或者int等值型变量,不要用引用型变量。如果必须使用,则需要保证不用的时候将其键值对remove掉。(map.remove)
2.WeakHashMap 可使用对象作为key,但是,如果符合如下条件将不回收:
垃圾回收器认为除了键之外有地方在引用它,就像上面a.id在a中有引用。
//真正的感想: .以上只是个人的极端假想,在编程中,很少使用对像做为Key,除了“Const String“。
本人因为太无聊,所以来研究了这些无聊的问题,这些问题怎么可能会在变成中出现??????
因为我的Key从来都是Const String!!!!
如果大侠们的"Key"习惯跟我不一样,敬请浏览一下上面代码,还望多多指教!
欢迎交流。
WeakHahMap,HashMap和(垃圾回收)Gc相关推荐
- 垃圾回收(GC)浅谈
关于内存 计算机通过两个机制,去实现内存的高效使用. 第一种机制是虚拟内存.硬盘的容量其实是远远大于内存的(RAM),虚拟内存会在内存不足的时候,把不经常访问的内存的数据写到硬盘里.虽然说硬盘容量比较 ...
- 【转】深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第六节 理解垃圾回收GC,提搞程序性能****
前言 虽然在.Net Framework 中我们不必考虑内在管理和垃圾回收(GC),但是为了优化应用程序性能我们始终需要了解内存管理和垃圾回收(GC).另外,了解内存管理可以帮助我们理解在每一个程序中 ...
- python进阶19垃圾回收GC
原创博客链接:python进阶19垃圾回收GC 垃圾收集三大手段 一.引用计数(计数器) Python垃圾回收主要以引用计数为主,分代回收为辅.引用计数法的原理是每个对象维护一个ob_ref,用来记录 ...
- python垃圾回收离职_垃圾回收gc.md
垃圾回收gc python的垃圾收回机制不想c和c++是开发者自己管理维护内存的,python的垃圾回收是系统自己处理的,所以作为普通的开发者,我们不需要关注垃圾回收部分的内容,如果想要深层次理解py ...
- 垃圾回收GC经典算法
目录 垃圾回收GC(Garbage Collection) 1.什么是垃圾 2.为什么要有GC 经典的GC算法 1.基本的一些概念 2.标记清除算法(Mark and Sweep) 3.复制法(cop ...
- IBM JDK(J9)垃圾回收(GC)策略
在IBM JDK 1.5之后,采用了如下的垃圾回收GC策略: 针对吞吐量进行优化 -Xgcpolicy:optthruput(可选) 默认策略.对于吞吐量比短暂的 GC 停顿更重要的应用程序,通常使用 ...
- .net C# 堆 栈 垃圾回收 GC
.NET C# .NET C# .NET C# .NET C# .NET C# .NET C# .NET C# 栈 堆 垃圾回收 GC #1 尽管在.NET framework下我们并不需要担心内存管 ...
- 第十五章: 菱悦 -垃圾回收GC详解
第 15章 垃圾回收GC详解 文章目录 第 15章 垃圾回收GC详解 1.System.gc() 的理解 1.1.System.gc() 方法 1.2.不可达对象回收行为 2.内存溢出与内存泄漏 2. ...
- java using idispose_c# 垃圾回收(GC)优化
GC,Garbage Collect,中文意思就是垃圾回收,指的是系统中的内存的分配和回收管理.其对系统性能的影响是不可小觑的.今天就来说一下关于GC优化的东西,这里并不着重说概念和理论,主要说一些实 ...
- HashMap与垃圾回收
今天在看Java核心技术1的时候看到HashMap的对象,书中讲到: 1.如果有一个值,对应的键不再使用他了,但由于key与value之间存在强引用,是不会被垃圾回收的 2.垃圾回收器跟踪活动的对 ...
最新文章
- Linux df -h 显示磁盘空间满,但实际未占用满——问题分析
- Redis集群官方推荐方案 Redis-Cluster
- Kubernetes1.5新特性(一):Kubelet API增加认证和授权能力
- C# 参数化SQL语句中的like和in
- java 8 方法引用(method references)
- 如何高效的编写与同步博客 (.NET Core 小工具实现)
- 从奥巴马假视频到ZAO,换脸和人脸检测技术发生了什么?
- ecshop各项功能介绍参考
- 使用svrx来mock数据
- 红帽Red Hat Linux镜像下载
- LEDE独臂路由器无法上网踩坑
- Altium 怎么设置鼠标滚轮放大缩小
- 值得借鉴:耗时两个月的求职经历
- 用计算机pol计算方位角,卡西欧计算方位角 计算器算方位角.doc
- 求帮忙,给python中安装matplotlib系统里有但是显示不出来,万分感谢啊大家
- 项目经理面试中可能遇到的问题(持续更新)
- [ERROR] Please refer to XXXXXXXXXXX for the individual test result
- 理想汽车的2021,是否“理想”?
- SSH The authenticity of host can’t be established Are you sure you want to continue connecting
- 计算机硬盘的报废处理,看看电脑大神怎么直接把电脑干“报废”的!
热门文章
- 腐蚀国内稳定服务器_WOW正式服:热修提升坐骑掉率,下周改动大幻象装备必带腐蚀...
- python完美立方数_Python练习实例3 | 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?...
- react native连接mysql_react-native上手之环境搭建及连接模拟器
- 后台定时给页面发送数据_苹果CMS10全自动定时采集教程
- java中怎样存储遍历的数据_【数据算法】Java实现二叉树存储以及遍历
- 数据查询分页 获取总数时间太长_干货:SQL Server 查询语句
- ASP.NET 4.0 新特性--Web.Config Transformation(原创)
- GraphQL和REST对比时需要注意些什么
- ipa 打包遇到的坑
- MVC3----筛选数据(BeginForm:输出form表单)