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),引用类在垃圾回收工作的过程中有重要作用。

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

WebHorizon($10.56/年)256MB/5G SSD/200GB/日本VPS

WebHorizon是一家去年成立的国外VPS主机商,印度注册,提供虚拟主机和VPS产品,其中VPS包括OpenVZ和KVM架构,有独立IP也有共享IP,数据中心包括美国、波兰、日本、新加坡等(共享IP主机可选机房更多)。目前商家对日本VPS提供一个8折优惠码,优惠后最低款OpenVZ套餐年付10.56美元起。OpenVZCPU:1core内存:256MB硬盘:5G NVMe流量:200GB/1G...

腾讯云轻量服务器老用户续费优惠和老用户复购活动

继阿里云服务商推出轻量服务器后,腾讯云这两年对于轻量服务器的推广力度还是比较大的。实际上对于我们大部分网友用户来说,轻量服务器对于我们网站和一般的业务来说是绝对够用的。反而有些时候轻量服务器的带宽比CVM云服务器够大,配置也够好,更有是价格也便宜,所以对于初期的网站业务来说轻量服务器是够用的。这几天UCLOUD优刻得香港服务器稳定性不佳,于是有网友也在考虑搬迁到腾讯云服务器商家,对于轻量服务器官方...

WHloud Date鲸云数据($9.00/月), 韩国,日本,香港

WHloud Date(鲸云数据),原做大数据和软件开发的团队,现在转变成云计算服务,面对海内外用户提供中国大陆,韩国,日本,香港等多个地方节点服务。24*7小时的在线支持,较为全面的虚拟化构架以及全方面的技术支持!官方网站:https://www.whloud.com/WHloud Date 韩国BGP云主机少量补货随时可以开通,随时可以用,两小时内提交退款,可在工作日期间全额原路返回!支持pa...

softreference为你推荐
阶乘符号1~10的阶乘(!)分别是多少?短信营销方案家装短信营销如何进行才有效?youtube创始人我的世界captainsparklez是谁暴力破解rar对RAR压缩包进行解压时需要密码,使用暴力破解仍无法解码该怎么办?公众号付费阅读怎么利用公众号做知识付费?刷ip流量如何刷自己网站的IP流量云输入法如何使用QQ云输入法?yui3求Yui的详细资料gbk内码Gbk内码查询怎么查微信注册时间怎么查对方的微信号什么时候注册的
网通vps 域名服务器的作用 winscp vps.net 青果网 申请个人网页 腾讯云分析 新家坡 腾讯实名认证中心 cn3 空间合租 paypal注册教程 网站加速软件 lick godaddy空间 攻击服务器 htaccess reboot WHMCS pptpvpn 更多