softreferencejava WeakReference和SoftReference的区别

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

java回收机制的原理是什么?

垃圾回收是java与c/c++的最大不同。

有了jvm的自动垃圾收集机制,就可以让程序员专注于程序逻辑开发,而不是花费大量的时间是考虑变量应该在什么时候去释放。

首先我们要知道要,jvm是如何判断一个对象已经变成了”垃圾“的呢? 一般用的是两个方法: 1)引用记数法: 为每个对象保存一个引用的数量,每增加一个引用这个值就加1,每减少一个引用就减1.如果这个记数变为0了,就说明这个对象已经不再被使用了。

那么jvm就认为这个对象是可以回收的了。

但是这个方法有一个缺点,就是无法解决循环引用的问题。

A引用B,B也引用A,如果A,B两个对象都不再被使用了,那么这两个对象其实都是可以被回收的,但是他们的引用记数不为0.所以用这个办法就没有办法回收了。

2)根搜索算法: 从一系列的”GC Roots“对象开始向下搜索,搜索走过的路径称为引用链。

当一个对象到”GC Roots“之间没有引用链时,被称为引用不可达。

引用不可到的对象被认为是可回收的对象。

java中可以当做为”GC Roots“对象的包括: 1:jvm虚拟机栈(栈帧中的局部变量表)中引用的对象 2:方法区中的类静态属性引用的对象 3:常量池中的常量引用的对象 4:本地方法栈JNI(native方法)中的引用的对象

referance和reference有何区别

reference 英[?refr?ns]美[?r?f?r?ns, ?r?fr?ns] n. 参考; 参考书; 提及,涉及; 证明人,介绍人 v. 引用; 参照 网络 参照系; 照应; 所指 第三人称单数:references复数:references现在分词:referencing过去式:referenced过去分词:referenced 双语例句 A useful reference work for teachers 有用的教师参考书

android 什么情况会用lrucache

内存缓存技术对那些大量占用应用程序宝贵内存的图片提供了快速访问的方法。

其中最核心的类是LruCache (此类在android-support-v4的包中提供) 。

这个类非常适合用来缓存图片,它的主要算法原理是把最近使用的对象用强引用存储在 LinkedHashMap 中,并且把最近最少使用的对象在缓存值达到预设定值之前从内存中移除。

  在过去,我们经常会使用一种非常流行的内存缓存技术的实现,即软引用或弱引用 (SoftReference or WeakReference)。

但是现在已经不再推荐使用这种方式了,因为从 Android 2.3 (API Level 9)开始,垃圾回收器会更倾向于回收持有软引用或弱引用的对象,这让软引用和弱引用变得不再可靠。

另外,Android 3.0 (API Level 11)中,图片的数据会存储在本地的内存当中,因而无法用一种可预见的方式将其释放,这就有潜在的风险造成应用程序的内存溢出并崩溃。

  为了能够选择一个合适的缓存大小给LruCache, 有以下多个因素应该放入考虑范围内,例如:   你的设备可以为每个应用程序分配多大的内存?   设备屏幕上一次最多能显示多少张图片?有多少图片需要进行预加载,因为有可能很快也会显示在屏幕上?   你的设备的屏幕大小和分辨率分别是多少?一个超高分辨率的设备(例如 Galaxy Nexus) 比起一个较低分辨率的设备(例如 Nexus S),在持有相同数量图片的时候,需要更大的缓存空间。

  图片的尺寸和大小,还有每张图片会占据多少内存空间。

  图片被访问的频率有多高?会不会有一些图片的访问频率比其它图片要高?如果有的话,你也许应该让一些图片常驻在内存当中,或者使用多个LruCache 对象来区分不同组的图片。

  你能维持好数量和质量之间的平衡吗?有些时候,存储多个低像素的图片,而在后台去开线程加载高像素的图片会更加的有效。

  并没有一个指定的缓存大小可以满足所有的应用程序,这是由你决定的。

你应该去分析程序内存的使用情况,然后制定出一个合适的解决方案。

一个太小的缓存空间,有可能造成图片频繁地被释放和重新加载,这并没有好处。

而一个太大的缓存空间,则有可能还是会引起 java.lang.OutOfMemory 的异常。

java WeakReference和SoftReference的区别

很早Java API就添加了弱引用(WeakReference)和软引用(SoftReference),引用类在垃圾回收工作的过程中有重要作用。

我们都知道垃圾回收器会回收符合回收条件的对象的内存,但并不是所有的程序员都知道回收条件取决于指向该对象的 引用类型。

湖北50G防御物理服务器( 199元/月 ),国内便宜的高防服务器

4324云是成立于2012年的老牌商家,主要经营国内服务器资源,是目前国内实力很强的商家,从价格上就可以看出来商家实力,这次商家给大家带来了全网最便宜的物理服务器。只能说用叹为观止形容。官网地址 点击进入由于是活动套餐 本款产品需要联系QQ客服 购买 QQ 800083597 QQ 2772347271CPU内存硬盘带宽IP防御价格e5 2630 12核16GBSSD 500GB​30M​1个IP...

819云(240元)香港CN2 日本CN2 物理机 E5 16G 1T 20M 3IP

819云是我们的老熟人了,服务器一直都是稳定为主,老板人也很好,这次给大家带来了新活动,十分给力 香港CN2 日本CN2 物理机 E5 16G 1T 20M 3IP 240元0官方网站:https://www.819yun.com/ 特惠专员Q:442379204套餐介绍套餐CPU内存硬盘带宽IP价格香港CN2 (特价)E5 随机分配16G1T 机械20M3IP240元/月日本CN2 (...

Kinponet是谁?Kinponet前身公司叫金宝idc 成立于2013年 开始代理销售美国vps。

在2014年发现原来使用VPS的客户需求慢慢的在改版,VPS已经不能满足客户的需求。我们开始代理机房的独立服务器,主推和HS机房的独立服务器。经过一年多的发展,我们发现代理的服务器配置参差不齐,机房的售后服务也无法完全跟上,导致了很多问题发生,对使用体验带来了很多的不便,很多客户离开了我们。经过我们慎重的考虑和客户的建议。我们在2015开始了重大的改变, 2015年,我们开始计划托管自己...

softreference为你推荐
订房系统求酒店开房系统离线包百度地图离线包如何下载?素数算法100以内的质数C算法,要步骤说明,谢谢。网络视频下载器网络视频下载工具哪个好用?broadcast播哈尔滨哪里有卖broadcast播 这个服装品牌的databasenamefoxpro中的的命令格式腾讯合作伙伴大会腾讯的合作伙伴都有彩信平台目前国内有哪些短信平台服务商,怎么排名?怎么查微信注册时间怎么查一个微信公众号的注册时间,发了多少条内容怎么查微信注册时间怎么查看自己的微信号用了多久
域名系统 北京主机租用 国际域名抢注 主机评测 raksmart softlayer winhost sugarsync 外国空间 国外php空间 全能主机 南昌服务器托管 双拼域名 免费私人服务器 申请免费空间和域名 监控服务器 东莞服务器托管 实惠 阿里云邮箱登陆 winds 更多