SoftReference集合

深入探索Java中的软引用与弱引用 Reference类是所有引用类的抽象基类,提供了一个get()方法,该方法在对象被垃圾回收后返回null。Reference类本身并不直接使用,而是通过其子类和来实现具体的引用策略。 阅读详情

SoftReference的语义就是当内存不够用的时候,GC会回收SoftReference所引用的对象。所以,在memory sensitive的程序中将某些大型数据设置成SoftReference再合适不过了。

创建一个SoftReference:

Java代码    收藏代码
  1. Object obj = new Object();    
  2. SoftReference softRef = new SoftReference(obj);    
  3. obj = null;    

 最后那句“obj = null”很重要。如果不将obj设置成null,那么new出来的Object就会有一个"strong reference",如果这样,softRef就不能发挥作用了。

 

使用SoftReferene:

Java代码    收藏代码
  1. Object obj2;    
  2. obj2 = sr.get();    
  3. if (obj2 == null) // GC freed this    
  4. sr = new SoftReference(obj2 = new Object());  

 因为是SoftReference,所以有可能已经被GC回收了,所以需要判断sr.get()的返回值是否为null。如果是的话,就再重新new一个Object。这里的最后一行代码也很有讲究,比如,也许会这么写:

Java代码    收藏代码
  1. Object obj2;    
  2. obj2 = sr.get();    
  3. if (obj2 == null) {    
  4.     sr = new SoftReference(new Object());    
  5.     obj2 = sr.get();    
  6. }   

 这样的问题就在于GC可能发生在"sr = new SoftReference(new Object());"和"obj2 = sr.get()"之间,那么obj2仍然有可能为null。

使用 Java 集合进行缓存系统设计的实践分享! 在现代应用程序中,缓存是提升系统性能的关键技术之一。缓存通过减少对后端数据源(如数据库、文件系统等)的访问,显著提升系统的响应速度。Java 提供了多种方式来设计和实现缓存系统,其中使用集合类(如)、以及第三方库(如)是实现高效缓存管理的常见方式。本文将从缓存系统设计的角度出发,分享如何使用 Java 集合进行缓存设计,包括 LRU(Least Recently Used)缓存的实现思路、和在缓存中的作用,以及如何使用来简化缓存管理。 阅读详情

相关推荐

【游戏开发】初识寻路&navmesh,探索RecastDemo

在手游时代,尤其对于大世界游戏而言,寻路的实现基本在专门的寻路服务器上进行。在众多寻路的解决方案中,recastnavigation是最为经典实用的一个,很多游戏甚至游戏引擎都采用类似的实现。recastnavigation项目自带了RecastDemo,用图形化的界面帮助用户认识寻路网格(navmesh)的生成以及寻路的过程。因此,作为初学者的笔者,也决定通过RecastDemo去初步认识寻路的机理奥秘。 构建RecastDemo 首先克隆recastnavigation项目,从文档中可以看到Recast

HiKariのTechLab 3051

SoftReference的使用

一、softReference的作用        SoftReference的主要特点就是在当内存不够的时候,GC会回收SoftReference所引用的对象。所以,在memory sensitive的项目中将某些数据设置成SoftReference可以避免内存的溢出。 1、创建一个SoftReference SoftReference> softReference = new Sof

格色情调的博客 1万+

matlab生成blocks、bumps和doppler标准测试信号

关键函数:wnoise使用方式X = wnoise(FUN,N) [X,XN] = wnoise(FUN,N,SQRT_SNR) [X,XN] = wnoise(FUN,N,SQRT_SNR,INIT)X = wnoise(FUN,N) 返回由 FUN给出的信号,长度为2^N,幅值范围[0,1].[X,XN] = wnoise(FUN,N,SQRT_SNR) ,返回了一个测试信号X,以及一个加噪

ZSZ_shsf的博客 6579

Cache专用: SoftReference

<br />没有想到有一天真的会用到SoftReference,学的时候完全不知道这东西能干吗。<br />今天它确实派上用场了,没错,我也是用它来做cache。<br /> <br />SoftReference的语义就是当内存不够用的时候,GC会回收SoftReference所引用的对象。所以,在memory sensitive的程序中将某些大型数据设置成SoftReference再合适不过了。<br /><br /><br />创建一个SoftReference:<br />Object obj =

智障大师 的专栏 8496

万达电影 com.wandafilm.app headers check

万达电影 安卓逆向 抓包 逆向 check

weixin_43786514的博客 1438

【Java面试题汇总】JVM篇(2026版)

JVM内存模型、双亲委派模型、类加载机制、内存溢出、垃圾回收机制、内存泄漏、垃圾回收流程、垃圾回收器、G1、CMS、JVM调优

种一棵树最好的时间是十年前,其次是现在 3万+

什么是java对象的强、软、弱和虚引用

本文介绍对象的强、软、弱和虚引用的概念、应用及其在UML中的表示。1.对象的强、软、弱和虚引用   在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、

liaomin416100569的专栏 1129

军品研制过程-转阶段

介绍军品转阶段评审

Abel的博客 2万+

Java Reference(SoftReference、WeakReference、PhantomReference)的使用

Reference继承自Object,有SoftReference、WeakReference、PhantomReference三个直接子类。 三个子类的构造方法中涉及到ReferenceQueue和Referent: Referent:被引用的对象 ReferenceQueue:当引用(软引用/弱引用/虚引用)的Referent被回收后,该引用(软引用/弱引用/虚引用)会被enqueu

Signal_Du的博客 959

数据分析案例-基于红米和华为手机的用户评论分析

在智能手机市场日益繁荣的今天,红米与华为手机作为国产手机品牌的佼佼者,凭借其各自独特的品牌魅力和技术实力,赢得了广泛的用户群体和高度关注。随着技术的不断进步和消费者需求的日益多样化,用户对手机的期望已不仅限于基本的通讯功能,更涵盖了性能、拍照、续航、用户体验等多个方面。因此,深入探究红米与华为手机在用户长期使用过程中的实际表现,尤其是用户评论中所反映出的真实反馈,对于理解市场需求、优化产品设计及提升用户体验具有重要意义。本实验的背景正是基于这样的市场环境和技术发展趋势。我们旨在通过收集并分析红米与华为手机的

m0_64336780的博客 1万+

十分钟搞定! DeepSeek本地部署详细指南!

保姆级教程,三步搞定deepseek本地部署,不求人!

一个喜欢诗和远方的程序媛 4345

SoftReference缓存图片

Java中的SoftReference即对象的软引用。如果一个对象具有软引用,内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。使用软引用能防止内存泄露,增强程序的健壮性。   SoftReference的特点是它的一个实例保存对一个Java对象的软引用,该软引用的存在不妨碍垃圾收...

weixin_33976072的博客 77

Google Earth Engine——使用STARFM 图像融合算法将Landsat 和 MODIS 融合得出2000-2023 NDVI长时序图(空间分辨率为 30 米、时间分辨率为 16 天)

非本地入侵物种是全球生态系统面临的主要威胁之一。野葛(Pueraria montana)是一种生长迅速的藤本植物,原产于亚洲,现已入侵美国一些地区,因此该物种的管理成为一个重要问题。利用 Landsat 和 MODIS 平台收集的数据,计算了 2000 年至 2015 年肯塔基州三个侵扰地点的归一化差异植被指数(NDVI)估算值。使用 STARFM 图像融合算法将大地遥感卫星和 MODIS 得出的 NDVI 结合成空间分辨率为 30 米、时间分辨率为 16 天的时间序列。

此星光明博客 2509

JavaSE_8系列博客——Java语言的特性(六)--泛型(5)--泛型的使用

JDK类库中泛型的使用集合类到目前为止,Java 类库中泛型支持存在最多的地方就是集合框架。就像容器类是 C++ 语言中模板的主要动机一样(参阅 附录 A:与 C++ 模板的比较)(尽管它们随后用于很多别的用途),改善集合类的类型安全是 Java 语言中泛型的主要动机。集合类也充当如何使用泛型的模型,因为它们演示了泛型的几乎所有的标准技巧和方言。所有的标准集合接口都是泛型化的 其他容器类除了集合

softwareCraftsman 701

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

关于java的内存泄露

从其他地方看到整理一下全局集合  在大的应用程序中有某种全局的数据储存库是很常见的,例如一个JNDI树或一个会话表。在这些情况下,必须注意管理储存库的大小。必须有某种机制从储存库中移除不再需要的数据。  这可能有多种方法,但是最常见的一种是周期性运行的某种清除任务。该任务将验证储存库中的数据,并移除任何不再需要的数据。  另一种管理储存库的方法是使用反向链接(referrer)计数。然后集合负责统

路漫漫,其修远 1945

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Java编程中如何避免内存泄漏实用技巧与最佳实践

将对象的引用定义在最小必要的作用域内,一旦超出该作用域,引用就会失效,从而使对象更快地变得不可达,有利于垃圾回收器进行回收。在事件驱动编程中,向事件源注册监听器或回调函数时,如果不在对象销毁前进行反注册,会导致事件源持续持有该对象的引用,阻止其被回收。在Java编程中,内存泄漏是指应用程序在不再需要某些对象时,未能释放其占用的内存,导致这些对象无法被垃圾回收器回收。,以及第三方工具如Eclipse MAT,可以帮助开发者监控堆内存使用情况,生成堆转储,并分析对象引用链,准确定位内存泄漏的根源。

f3051709的博客 329

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Android--SoftReference缓存图片

SoftReference缓存图片 2012-4-13 09:04| 发布者: benben| 查看: 2426| 评论: 0 摘要: Java中的SoftReference即对象的软引用。如果一个对象具有软引用,内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用 ...

巫山老妖 3071

java gc代码_Java如何编写对G

1。使用更多生命周期短的、小的、不改变指向(immutable)的对象,编写清晰的代码。出于懒惰也好,朴素的节俭意识也好,我们都习惯对一个变量重用再重用。但是。。。。Java的垃圾收集器喜欢短生命周期的对象,对象如果在新生代内,在垃圾收集发生前就死掉了,垃圾收集器就什么都不用做了。现代JVM构建一个新对象只需要10个本地CPU指令,并不弱于C/C++。 (但垃圾收集没有压缩算法时会稍慢,更频繁的N...

weixin_35805266的博客 142

第十七章:容器深入研究

第十七章:容器深入研究 文章目录第十七章:容器深入研究前言二、collection的可选操作1、未获支持的操作三、List的功能方法总结 前言 提示:这里可以添加本文要记录的大概内容: 二、collection的可选操作 1、面向对象设计中的契约,无论你选择如何实现该接口,都可以向接口发送消息,但是可选操作违反这基本原则。 2、collection中的增加或移除都是可选操作,意味着实现类并不需要这些方法提供功能定义。 3、未获支持的操作,可以延迟到需要时在实现。 4、ArrayList、HashSet

jue6628的博客 842

Android中使用SoftReference缓存图片对象

ava中的SoftReference 即对象的软引用。如果一个对象具有软引用,内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。使用软引用能防止内存泄露,增强程序的健壮性。    SoftReference的特点是它的一个实例保存对一个Java对象的软引用,该软引用的存在不妨碍

kaixinbingju的专栏 973

Android使用缓存优化ListView

ListView调用Adapter的getView方法获取每一个Item布局,将这些已经获得的Item布局放入缓存,将大大提高获取数据的效率,而且节省更多的流量,将数据进行缓存有两种方法是,一种是将内存缓存一种是sd卡缓存,在此分别进行演示。 sd卡缓存: sd卡缓存是将下载的数据保存到sd卡中,当再次要获取数据时,首先要判断sd卡中是否存在,如果存在的话,就直接读取sd卡中的数据,如

龙海的专栏 538

软引用和弱引用的使用场景

软引用和弱引用 SoftReference(软引用)和WeakReference(弱引用)在JAVA中对应着两个类,在SoftReference类中,有三个方法,两个构造方法和一个get方法(WekReference类似),而当应用它们指向对象时应该如下操作 WeakReference&lt;String&gt; wr = new WeakReference(new String("123"...

weixin_41985660的博客 7382
上一篇: C#实现POST提交方式
下一篇: SQL Server中实现汉语拼音搜索
聪明叔
博客等级 码龄22年 20粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值