softreference理论上来说,下面哪种引用最容易被jvm垃圾回收 软引用

softreference  时间:2021-06-17  阅读:()

弱引用(weakReference)和softReference有什么区别?

弱引用对象,它们并不禁止其指示对象变得可终结,并被终结,然后被回收。

弱引用最常用于实现规范化的映射。

假定垃圾回收器确定在某一时间点上某个对象是弱可到达对象。

这时,它将自动清除针对此对象的所有弱引用,以及通过强引用链和软引用,可以从其到达该对象的针对任何其他弱可到达对象的所有弱引用。

同时它将声明所有以前的弱可到达对象为可终结的。

在同一时间或晚些时候,它将那些已经向引用队列注册的新清除的弱引用加入队列。

******************************************************************************************* SoftReference: 软引用对象,在响应内存需要时,由垃圾回收器决定是否清除此对象。

软引用对象最常用于实现内存敏感的缓存。

假定垃圾回收器确定在某一时间点某个对象是软可到达对象。

这时,它可以选择自动清除针对该对象的所有软引用,以及通过强引用链,从其可以到达该对象的针对任何其他软可到达对象的所有软引用。

在同一时间或晚些时候,它会将那些已经向引用队列注册的新清除的软引用加入队列。

软可到达对象的所有软引用都要保证在虚拟机抛出 OutOfMemoryError 之前已经被清除。

否则,清除软引用的时间或者清除不同对象的一组此类引用的顺序将不受任何约束。

然而,虚拟机实现不鼓励清除最近访问或使用过的软引用。

此类的直接实例可用于实现简单缓存;该类或其派生的子类还可用于更大型的数据结构,以实现更复杂的缓存。

只要软引用的指示对象是强可到达对象,即正在实际使用的对象,就不会清除软引用。

例如,通过保持最近使用的项的强指示对象,并由垃圾回收器决定是否放弃剩余的项,复杂的缓存可以防止放弃最近使用的项 **************************************************** weakReference一般用来防止内存泄漏,要保证内存被VM回收

app运行时发生oom的原因

App使用图片时避免OOM的几种方式: 4.1 直接null或recycle 对于app里使用的大量图片,采用方式:使用时加载,不显示时直接置null或recycle。

这样处理是个好习惯,记本可以杜绝OOM,但是缺憾是代码多了,可能会忘记某些资源recycle。

而有些情况下会出现特定图片反复加载,释放,再加载等,低效率的事情。

4.2 简单通过SoftReference引用方式管理图片资源 建个SoftReference的hashmap 使用图片时先查询这个hashmap是否有softreference, softreference里的图片是否为空, 如果为空就加载图片到softreference并加入hashmap。

无需再代码里显式的处理图片的回收与释放,gc会自动处理资源的释放。

这种方式处理起来简单实用,能一定程度上避免前一种方法反复加载释放的低效率。

但还不够优化。

4.3 强引用+软引用二级缓存 Android示范程序ImageDownloader.java, 使用了一个二级缓存机制。

就是有一个数据结构直接持有解码成功的Bitmap对象引用,同时使用一个二级缓存数据结构保持淘汰的Bitmap的softreference对象,由于softreference对象的特殊性,系统会再需要内存的时候首先将softreference持有的对象释放掉,也就是说当vm发现可用的内存较少需要出发gc的时候,二级缓存中的bitmap对象将被回收,而持有一级缓存的bitmap对象用于显示。

其实这个解决方案最为关键的一点是使用了一个比较合适的数据结构,那就是LinkedHashMap类型来进行一级缓存Bitmap的容器。

由于LinkeHashMap的特殊性,我们可以控制其内存存储对象的个数并且将不在使用的对象从容器中移除,放到softreference二级缓存里,我们可以在一级缓存中一致保存最近被访问到的bitmap对象,而已经被访问过的图片在LinkedHashMap的容量超过我们预设值时将会把容器中存在的时间最长的对象移除,这个时候我么可以将被移除的LinkedHashMap中的放到二级缓存容器,而二级缓存中的对象管理就交给系统来做了,当系统需要gc时就会首先回收二级缓存容器的Bitmap对象了。

在获取图片对象时候先从一级缓存容器中查找,如果有对应对象并可用直接返回,如果没有的话从二级缓存中查找对应的SoftReference, 判断SoftReference对象持有的Bitmap是否可用,可用直接返回,否则返回空。

如果二级缓存都找不到图片,那就直接加载图片资源。

4, LruCache + sd的缓存方式

理论上来说,下面哪种引用最容易被jvm垃圾回收 软引用

打个比方:他们都相当于可有可无的用品。

当内存不够时,垃圾回收器会回收软引用的对象。

弱引用的对象拥有更短暂的生命周期当垃圾回收器扫描的时候不管内存够不够如果发现了弱引用的对象,都会回收。

不过垃圾回收器是一个优先级很低的线程, 因此不一定会很快发现那些只具有弱引用的对象。

IMIDC彩虹数据:日本站群多ip服务器促销;30Mbps带宽直连不限流量,$88/月

imidc怎么样?imidc彩虹数据或彩虹网络现在促销旗下日本多IP站群独立服务器,原价159美元的机器现在只需要88美元,而且给13个独立IPv4,30Mbps直连带宽,不限制月流量!IMIDC又名为彩虹数据,rainbow cloud,香港本土运营商,全线产品都是商家自营的,自有IP网络资源等,提供的产品包括VPS主机、独立服务器、站群独立服务器等,数据中心区域包括香港、日本、台湾、美国和南非...

欧路云:美国CUVIP线路10G防御,8折优惠,19元/月起

欧路云新上了美国洛杉矶cera机房的云服务器,具备弹性云特征(可自定义需要的资源配置:E5-2660 V3、内存、硬盘、流量、带宽),直连网络(联通CUVIP线路),KVM虚拟,自带一个IP,支持购买多个IP,10G的DDoS防御。付款方式:PayPal、支付宝、微信、数字货币(BTC USDT LTC ETH)测试IP:23.224.49.126云服务器 全场8折 优惠码:zhujiceping...

器安装环境和运维管理工具推荐

今天看到一个网友从原来虚拟主机准备转移至服务器管理自己的业务。这里问到虚拟主机和服务器到底有什么不同,需要用到哪些工具软件。那准备在下班之间稍微摸鱼一下整理我们服务器安装环境和运维管理中常见需要用到的软件工具推荐。第一、系统镜像软件一般来说,我们云服务器或者独立服务器都是有自带镜像的。我们只需要选择镜像安装就可以,比如有 Windows和Linux。但是有些时候我们可能需要自定义镜像的高级玩法,这...

softreference为你推荐
ata考试什么是计算机ATA考试?要详细答案!谢谢帮忙!!中国学生网中国大学生在线邮箱怎么申请?windowsmedia为什么打开所有程序都出现Windows Media Playerico监管在中国ICO为什么不合法比思论坛永久域名不知道为什么 比思论坛的网站打不开 怎么办呐东兴证券网站东兴证券交易软件如何操作?gbk内码高考姓名gbk内码查询acceptchangeswinform 怎样把DataTable 中的值插入到数据库中100days英文的一百天怎么说aviconverter谁有好得AVI转换器?可以全部转换得!
域名劫持 便宜vps 什么是二级域名 suspended 日志分析软件 国内加速器 英文站群 免费个人网站申请 微信收钱 国外免费全能空间 七夕快乐英文 南通服务器 免费申请网站 电信托管 google台湾 百度云加速 lamp的音标 数据湾 酷锐 cx域名 更多