首页 > 编程语言 >Java引用类型与WeakHashMap

Java引用类型与WeakHashMap

时间:2024-08-24 10:38:23浏览次数:7  
标签:WeakHashMap 缓存 Java 回收 引用 key

Java中的引用类型

  • 强引用:直接引用,只要强引用存在就不回收

  • 软引用:描述一些非必须得对象,内存不足时可能会回收

  • 弱引用:下一次GC扫描到就会回收

  • 虚引用:用于在对象回收后执行清理操作,与引用队列配合使用

    • 虚引用在创建时可以指定引用队列

    • 在被回收之后可以通过队列判断回收状态并执行相关操作

WeakHashMap

概述:一个弱引用的HashMap,适用于需要缓存的场景,但是由于缓存有限,不能缓存所有的对象,需要可以清理的缓存。

WeakHashMap 内部是通过弱引用来管理entry的,弱引用的特性对应到 WeakHashMap 上意味着什么呢?将一对key, value放入到 WeakHashMap 里并不能避免该key值被GC回收,除非在 WeakHashMap 之外还有对该key的强引用

实现原理

  • 弱引用,在WeakHashMap的Entry上继承了WeakReference,如果这个对象没有被强引用,那么就是弱引用对象。

    private static class Entry<K,V> extends WeakReference<Object> implements Map.Entry<K,V>

标签:WeakHashMap,缓存,Java,回收,引用,key
From: https://www.cnblogs.com/lilizzyy/p/18377494

相关文章

  • 哈夫曼树和哈夫曼编码详解(包含Java代码实现)
    目录什么是哈夫曼树?如何构造哈夫曼树?构造过程代码实现哈夫曼树的结构构建哈夫曼树并计算WPL值测试代码什么是哈夫曼编码?如何构建哈夫曼编码?构建过程代码实现什么是哈夫曼树?哈夫曼树又称为最优树,是一类带权路径长度最短的树,在实际中有着广泛的应用。介绍哈夫曼树......
  • java 查询数据库并生成多层children
    首先,定义一个表示组织结构的简单类:publicclassOrganization{privateintid;privateintparentId;privateStringname;privateList<Organization>children;//省略构造函数、getter和setter}然后,编写一个方法来查询数据库并构建多层嵌套的......
  • 在Java中常见的池化技术
    什么是池化技术池化技术的原理可以用一个生活中的比喻来理解。 想象有一个图书馆,里面有很多人需要借书和还书。如果没有任何管理措施,每次有人借书时,图书馆管理员都要去仓库找一本新的书拿出来给读者,等读者还书时,管理员又要把书放回仓库。这样的过程非常耗时耗力,而且仓库里......
  • 基于Java+Vue的采购管理系统:提高决策效率(项目代码)
        前言:采购管理系统是一个综合性的管理平台,旨在提高采购过程的效率、透明度,并优化供应商管理。以下是对各个模块的详细解释:一、供应商准入供应商注册:供应商通过在线平台进行注册,填写基本信息和资质文件。资质审核:系统对供应商提交的资质文件进行自动或人工审核,确保......
  • 009java jsp SSM springboot月度员工绩效考核管理系统绩效指标管理(源码+文档+PPT+任务
     项目技术:Springboot+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:window......
  • 015java jsp SSM springboot在线视频课程教育学习平台系统(源码+文档+PPT+开题+运行视
     项目技术:Springboot+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:window......
  • Java 12 新特性—Switch 表达式
    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!阶段1、深入多线程阶段2、深入多线程设计模式阶段3、深入juc源码解析阶段4、深入jdk其余源码解析......
  • Java 12 新特性—新增 String API
    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!阶段1、深入多线程阶段2、深入多线程设计模式阶段3、深入juc源码解析阶段4、深入jdk其余源码解析......
  • 基于java教师课堂教学质量评价系统设计与实现
    课题背景高等学校的根本任务是培养人才,课堂教学是高校完成人才培养的重要环节,因此,教师教学质量的高低对学生掌握和运用知识的程度有着密不可分的作用,为了保证教师的教学质量,教学评价成为了各高校衡量教师教学质量的重要方式之一。目前,教师“听课”和学生“学期末教师课程评......
  • Java实现MQTT通信(发布订阅消息)
    文章目录前言一、相关pom依赖二、相关代码1.MQTT工具类2.MQTT回调函数3.订阅消息4.发布消息三、安装mosquitto1.mosquitto简介2.下载四、安装MQTT.fx1.MQTT.fx简介2.下载3.使用五、java订阅消息六、java发布消息前言MQTT是一种轻量级的物联网通信协议,基于客户端-......