首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    weakHashMap用法

    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并不是你啥也不干他就能自动释放内部不用的对象的,而是在你访问它的内容的时候释放内部不用的对象

    27320

    浅谈WeakHashMap

    Java WeakHashMap 到底Weak在哪里,它真的很弱吗?WeakHashMap 的适用场景是什么,使用时需要注意些什么?弱引用和强引用对Java GC有什么不同影响?...总体介绍 在Java集合框架系列文章的最后,笔者打算介绍一个特殊的成员:WeakHashMap,从名字可以看出它是某种 Map。...WeakHashMap 内部是通过弱引用来管理entry的,弱引用的特性对应到 WeakHashMap 上意味着什么呢?...将一对key, value放入到 WeakHashMap 里并不能避免该key值被GC回收,除非在 WeakHashMap 之外还有对该key的强引用。...集合框架(Java Collections Framework Internals)系列已经全部讲解完毕,希望这几篇简短的博文能够帮助各位读者对Java容器框架建立基本的理解。

    49520

    WeakHashMap理解

    JDK.1.2 之后,Java 对引用的概念进行了扩充,将引用分为了:强引用、软引用、弱引用、虚引用4 种。而我们的WeakHashMap就是基于弱引用。...不过还要注意一点,那就是ReferenceQueue,他的作用是GC会清理掉对象之后,引用对象会被放到ReferenceQueue中。...因此我们每次访问WeakHashMap的时候,都会调用这个expungeStaleEntries函数清理一遍。这也就是为什么前两次调用WeakHashMap的size()方法有可能不一样的原因。...: Java heap space at collections.WeakHashMapTest.main(WeakHashMapTest.java:39) 如果我们将HashMap换成WeakHashMap...: Java heap space at collections.WeakHashMapTest.main(WeakHashMapTest.java:43) 如果存放在WeakHashMap中的key都存在强引用

    67420

    【深入理解Java集合框架】浅谈WeakHashMap

    总体介绍 在Java集合框架系列文章的最后,笔者打算介绍一个特殊的成员:WeakHashMap,从名字可以看出它是某种 Map。...我们都知道Java中内存是通过GC自动管理的,GC会在程序运行过程中自动判断哪些对象是可以被回收的,并在合适的时机进行内存释放。GC判断某个对象是否可被回收的依据是,是否有有效的引用指向该对象。...WeakHashMap 内部是通过弱引用来管理entry的,弱引用的特性对应到 WeakHashMap 上意味着什么呢?...关于强引用,弱引用等概念以后再具体讲解,这里只需要知道Java中引用也是分种类的,并且不同种类的引用对GC的影响不同就够了。...不过Java Collections工具类给出了解决方案,Collections.newSetFromMap(Map map)方法可以将任何 Map包装成一个Set。

    45520

    weakHashMap 用法

    WeakHashMap,此种Map的特点是: 当除了自身有对key的引用外,此key没有其他引用,那么GC之后此map会自动丢弃此值 当使用 WeakHashMap 时,即使没有显示的添加或删除任何元素...出现这个状况的原因是,对于a对象而言,当HashMap remove掉并且将a指向null后,除了WeakHashMap中还保存a外已经没有指向a的指针了,所以WeakHashMap会自动舍弃掉a,而对于...我们都知道Java中内存是通过GC自动管理的,GC会在程序运行过程中自动判断哪些对象是可以被回收的,并在合适的时机进行内存释放。GC判断某个对象是否可被回收的依据是,是否有有效的引用指向该对象。...WeakHashMap 内部是通过弱引用来管理entry的,弱引用的特性对应到 WeakHashMap 上意味着什么呢?...将一对key, value放入到 WeakHashMap 里并不能避免该key值被GC回收,除非在 WeakHashMap 之外还有对该key的强引用。

    40610

    浅析WeakHashMap

    在Java或者是Android编程中,我们一般都会使用到Map,比如HashMap这样的具体实现。更高级一点,我们可能会使用WeakHashMap。...WeakHashMap其实和HashMap大多数行为是一样的,只是WeakHashMap不会阻止GC回收key对象(不是value),那么WeakHashMap是怎么做到的呢,这就是我们研究的主要问题。...在Java中,有四种引用类型 强引用(Strong Reference),我们正常编码时默认的引用类型,强应用之所以为强,是因为如果一个对象到GC Roots强引用可到达,就可以阻止GC回收该对象 软引用...removeEntry(toRemove); Log.d(LOGTAG, "removeEntry=" + toRemove.value); } } 为什么没有使用看似更好的通知呢,我想是因为在Java...}") } 我们按照如下操作 点击fab控件,每次对WeakhashMap对象增加一个Entry,并打印WeakHashMap的size 执行3此 在没有强制触发GC时,WeakHashMap对象size

    1.1K20

    Java之WeakHashMap原理及实际应用详解

    摘要   本文将介绍Java中的WeakHashMap,包括其定义、特点、源代码解析、应用场景案例、优缺点分析、类代码方法介绍、测试用例以及全文小结。...WeakHashMap 简介   在Java中,WeakHashMap是一种继承自AbstractMap类,实现了Map接口的类。...如上测试用例主要测试了Java中的WeakHashMap的特性。在代码中,首先创建了一个WeakHashMap实例,并在其中使用Integer、Float和Double类型的键值对进行了填充。...全文小结   本文介绍了Java中的WeakHashMap,包括其定义、特点、源代码解析、应用场景案例、优缺点分析、类代码方法介绍以及测试用例等。...总结   本文介绍了Java中的WeakHashMap,它是一种能够自动回收不再需要的key所占用的内存的数据结构。

    65041

    【集合框架WeakHashMap】

    在 Java 中,普通的 Map(如 HashMap)会对键和值保持强引用,这意味着: Map map = new HashMap(); Key key = new Key(...不再被任何地方引用时,GC 会自动回收它,同时 WeakHashMap 会自动清理对应的缓存项,无需手动维护。...需要自动清理的元数据 WeakHashMap ✅ 优势:自动清理,防止内存泄漏 ❌ 缺点:依赖 GC,清理时机不可控;不适合关键数据存储 七、注意事项与最佳实践 ❗ 注意事项 不要依赖 WeakHashMap...九、总结 WeakHashMap 是 Java 集合中一个“智能自动清理”的工具。 它通过弱引用 + ReferenceQueue 的机制,实现了“当键不再被使用时,自动删除键值对”的能力。...掌握 WeakHashMap,不仅是掌握一个集合类,更是理解了 Java 引用机制、GC 协作、内存管理的深层设计。

    28510
    领券