`

Java WeakHashMap的一点感悟

    博客分类:
  • java
 
阅读更多

https://www.jianshu.com/p/98cde86056ac

 

实际上value的回收是延迟与key的,仅仅是在key被GC后,把value置为null,并不是立即回收

https://www.jianshu.com/p/e1b6aefeb807

 

 

------------------------

WeakHashMap,此种Map的特点是:

 

 

 

当除了自身有对key的引用外,此key没有其他引用那么此map会自动丢弃此值,

 

 

 

举例来说:声明了两个Map对象,一个是HashMap,一个是WeakHashMap,同时向两个map中放入a、b两个对象,当HashMap  remove掉a 并且将a、b都指向null时,WeakHashMap中的a将自动被回收掉。出现这个状况的原因是,对于a对象而言,当HashMap  remove掉并且将a指向null后,除了WeakHashMap中还保存a外已经没有指向a的指针了,所以WeakHashMap会自动舍弃掉a,而对于b对象虽然指向了null,但HashMap中还有指向b的指针,所以

WeakHashMap将会保留

 

 

总结来说:WeakHashMap并不是你啥也不干他就能自动释放内部不用的对象的,而是在你访问它的内容的时候释放内部不用的对象

 

--------------------- 

作者:刘嘉威 

来源:CSDN 

原文:https://blog.csdn.net/liu88010988/article/details/50789056 

版权声明:本文为博主原创文章,转载请附上博文链接!

 

 

 

 

 

----------------------

https://www.jb51.net/article/127082.htm

分享到:
评论

相关推荐

    java集合-WeakHashMap的使用

    WeakHashMap是Java中的一种特殊的哈希表实现,它使用弱引用(Weak Reference)来保存键对象。当键对象没有被其他强引用引用时,在垃圾回收时会自动从WeakHashMap中移除对应的键值对。

    Java编程WeakHashMap实例解析

    Java编程WeakHashMap实例解析 WeakHashMap是Java编程中的一种特殊的HashMap实现,它使用弱引用来保存键和值,这样可以使得垃圾回收器自动清理键和值。在WeakHashMap中,键和值都是弱引用的,这样可以避免内存泄露...

    WeakHashMap的使用方法详解

    WeakHashMap是Java中的一种哈希映射表,它的键是弱引用的,意味着当 WeakHashMap 的键对象只有 WeakHashMap 自己持有时,垃圾回收器可以将其回收。WeakHashMap 的使用方法主要体现在以下几个方面: 1. WeakHashMap...

    Java弱引用与WeakHashMap

    书中还提到可以用WeakHashMap来作为缓存的容器可以有效解决这一问题。之前也确实遇到过类似问题,但是没有接触过“弱引用”相关的问题,于是查阅了一些资料。  《Java 理论与实践: 用弱引用堵住内存泄漏》一文也...

    清华妹子的Java仓库(进阶学习路线)

    本仓库记录了我的Java学习进阶之路,涵盖了Java基础、JDK源码、JVM中的重要知识,附有代码和博客讲解,旨在提供一个Java在线共享学习平台,帮助更多的...Java集合框架源码解读(4)——WeakHashMap Java集合框架源码解读

    Java内置观察者模式

    Java 1.6后提供了`WeakHashMap`,可以用于存储弱引用的观察者。 - **多参数通知**:默认的`update`方法只传递了一个`Object`参数,可能无法满足复杂场景的需求。可以通过自定义参数类型或使用`java.util.EventObject...

    Java 基础核心总结.pdf

    WeakHashMap和IdentityHashMap则提供了特殊的键值映射策略。 此外,Java的I/O流系统支持字符和字节流,如File类处理文件操作,InputStream和OutputStream处理字节流,Reader和Writer处理字符流。null是Java中的特殊...

    简易人员管理系统(纯Java版)

    7. **缓存机制**:为了提升性能,系统可能使用了内存缓存,如Java的WeakHashMap或Guava Cache,将频繁访问的数据暂存于内存中,减少对硬盘的访问。 8. **权限管理**:管理员账号的设置涉及权限控制,系统可能使用了...

    Java基础核心总结.PDF

    Java的集合框架包括List(如ArrayList、LinkedList和Vector)、Set(如HashSet、TreeSet、LinkedHashSet和PriorityQueue)、Map(如HashMap、TreeMap、LinkedHashMap、Hashtable、IdentityHashMap、WeakHashMap)...

    java 9.27_java_

    在内存模型方面,Java 9引入了弱引用关联映射表(`WeakHashMap`)的新实现,这在处理内存敏感的应用场景中更有优势。 最后,Java 9对Javadoc也进行了改进,支持Markdown语法,使得文档注释更加易读和格式化。 总的来...

    Java 基础核心总结 +经典算法大全.rar

    《Java 基础核心总结》 Java 概述 什么是 Java2 Java 的特点Java 开发环境 JDK JRE Java 开发环境配置 Java 基本语法 数据类型基础语法运算符 Java 执行控制流程条件语句 if 条件语句 if...else 条件语句if...else ...

    Java集合详解,详细讲解java的集合类

    Java集合框架是Java编程语言中的核心部分,它提供了一种高效、灵活的方式来组织和操作对象的集合。在Java中,集合主要分为两大类:Collection和Map。本文将深入讲解Java集合类,特别是Collection接口和其下的List、...

    Java基础核心知识点总结(79页).pdf

    HashMap、TreeMap、LinkedHashMap、Hashtable、IdentityHashMap、WeakHashMap是不同的映射结构,它们用于存储键值对。Collections类提供了集合操作的静态方法,如排序、查找、转换等。 Java还支持泛型,用于在编译...

    java集合与通用集合

    Java集合与通用集合是Java编程中的重要组成部分,主要用于存储和管理对象。集合框架自Java 1.2引入以来,已经成为Java开发中不可或缺的工具。在Java高级编程中,理解并熟练掌握集合的使用至关重要。 首先,集合框架...

    一个讲解很清晰的Java集合框架PPT

    而WeakHashMap则使用弱引用作为键,当键不再被引用时,键值对会自动从映射中移除。 PPT可能涵盖了这些接口的详细特性,包括它们的实现类、操作方法、性能分析,以及如何根据实际需求选择合适的集合类型。此外,还...

    Java所有课程超全学习笔记

    2.2 Map接口:HashMap、LinkedHashMap、TreeMap、WeakHashMap及其用法。 2.3 集合操作:遍历、添加、删除元素,集合转换,流式API等。 三、IO与NIO 3.1 字节流和字符流:FileInputStream、FileOutputStream、...

    java 集合部分笔记

    其他实现如LinkedHashMap保持插入顺序,WeakHashMap使用弱引用,IdentityHashMap比较对象的内存地址而非equals()。 示例代码: ```java // 创建ArrayList并添加元素 List<String> list = new ArrayList(); list.add...

    疯狂JAVA讲义

    7.6.3 WeakHashMap实现类 279 7.6.4 IdentityHashMap实现类 280 7.6.5 EnumMap实现类 281 7.7 HashSet和HashMap的性能选项 282 7.8 操作集合的工具类:Collections 283 7.8.1 排序操作 283 7.8.2 查找,替换...

    java避免内存泄露

    ### Java避免内存泄露的关键知识点 #### 一、内存泄露的概念及原因 内存泄露是指程序在申请内存后未能释放,导致这部分内存无法再次被利用。在Java中,由于具备垃圾回收机制(GC),理论上开发者不必担心内存泄露...

Global site tag (gtag.js) - Google Analytics