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相关推荐

  1. 垃圾回收(GC)浅谈

    关于内存 计算机通过两个机制,去实现内存的高效使用. 第一种机制是虚拟内存.硬盘的容量其实是远远大于内存的(RAM),虚拟内存会在内存不足的时候,把不经常访问的内存的数据写到硬盘里.虽然说硬盘容量比较 ...

  2. 【转】深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第六节 理解垃圾回收GC,提搞程序性能****

    前言 虽然在.Net Framework 中我们不必考虑内在管理和垃圾回收(GC),但是为了优化应用程序性能我们始终需要了解内存管理和垃圾回收(GC).另外,了解内存管理可以帮助我们理解在每一个程序中 ...

  3. python进阶19垃圾回收GC

    原创博客链接:python进阶19垃圾回收GC 垃圾收集三大手段 一.引用计数(计数器) Python垃圾回收主要以引用计数为主,分代回收为辅.引用计数法的原理是每个对象维护一个ob_ref,用来记录 ...

  4. python垃圾回收离职_垃圾回收gc.md

    垃圾回收gc python的垃圾收回机制不想c和c++是开发者自己管理维护内存的,python的垃圾回收是系统自己处理的,所以作为普通的开发者,我们不需要关注垃圾回收部分的内容,如果想要深层次理解py ...

  5. 垃圾回收GC经典算法

    目录 垃圾回收GC(Garbage Collection) 1.什么是垃圾 2.为什么要有GC 经典的GC算法 1.基本的一些概念 2.标记清除算法(Mark and Sweep) 3.复制法(cop ...

  6. IBM JDK(J9)垃圾回收(GC)策略

    在IBM JDK 1.5之后,采用了如下的垃圾回收GC策略: 针对吞吐量进行优化 -Xgcpolicy:optthruput(可选) 默认策略.对于吞吐量比短暂的 GC 停顿更重要的应用程序,通常使用 ...

  7. .net C# 堆 栈 垃圾回收 GC

    .NET C# .NET C# .NET C# .NET C# .NET C# .NET C# .NET C# 栈 堆 垃圾回收 GC #1 尽管在.NET framework下我们并不需要担心内存管 ...

  8. 第十五章: 菱悦 -垃圾回收GC详解

    第 15章 垃圾回收GC详解 文章目录 第 15章 垃圾回收GC详解 1.System.gc() 的理解 1.1.System.gc() 方法 1.2.不可达对象回收行为 2.内存溢出与内存泄漏 2. ...

  9. java using idispose_c# 垃圾回收(GC)优化

    GC,Garbage Collect,中文意思就是垃圾回收,指的是系统中的内存的分配和回收管理.其对系统性能的影响是不可小觑的.今天就来说一下关于GC优化的东西,这里并不着重说概念和理论,主要说一些实 ...

  10. HashMap与垃圾回收

    今天在看Java核心技术1的时候看到HashMap的对象,书中讲到:  1.如果有一个值,对应的键不再使用他了,但由于key与value之间存在强引用,是不会被垃圾回收的  2.垃圾回收器跟踪活动的对 ...

最新文章

  1. Linux df -h 显示磁盘空间满,但实际未占用满——问题分析
  2. Redis集群官方推荐方案 Redis-Cluster
  3. Kubernetes1.5新特性(一):Kubelet API增加认证和授权能力
  4. C# 参数化SQL语句中的like和in
  5. java 8 方法引用(method references)
  6. 如何高效的编写与同步博客 (.NET Core 小工具实现)
  7. 从奥巴马假视频到ZAO,换脸和人脸检测技术发生了什么?
  8. ecshop各项功能介绍参考
  9. 使用svrx来mock数据
  10. 红帽Red Hat Linux镜像下载
  11. LEDE独臂路由器无法上网踩坑
  12. Altium 怎么设置鼠标滚轮放大缩小
  13. 值得借鉴:耗时两个月的求职经历
  14. 用计算机pol计算方位角,卡西欧计算方位角 计算器算方位角.doc
  15. 求帮忙,给python中安装matplotlib系统里有但是显示不出来,万分感谢啊大家
  16. 项目经理面试中可能遇到的问题(持续更新)
  17. [ERROR] Please refer to XXXXXXXXXXX for the individual test result
  18. 理想汽车的2021,是否“理想”?
  19. SSH The authenticity of host can’t be established Are you sure you want to continue connecting
  20. 计算机硬盘的报废处理,看看电脑大神怎么直接把电脑干“报废”的!

热门文章

  1. 腐蚀国内稳定服务器_WOW正式服:热修提升坐骑掉率,下周改动大幻象装备必带腐蚀...
  2. python完美立方数_Python练习实例3 | 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?...
  3. react native连接mysql_react-native上手之环境搭建及连接模拟器
  4. 后台定时给页面发送数据_苹果CMS10全自动定时采集教程
  5. java中怎样存储遍历的数据_【数据算法】Java实现二叉树存储以及遍历
  6. 数据查询分页 获取总数时间太长_干货:SQL Server 查询语句
  7. ASP.NET 4.0 新特性--Web.Config Transformation(原创)
  8. GraphQL和REST对比时需要注意些什么
  9. ipa 打包遇到的坑
  10. MVC3----筛选数据(BeginForm:输出form表单)