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

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

DogYun香港BGP月付14.4元主机简单测试

前些天赵容分享过DogYun(狗云)香港BGP线路AMD 5950X经典低价云服务器的信息(点击查看),刚好账户还有点余额够开个最低配,所以手贱尝试下,这些贴上简单测试信息,方便大家参考。官方网站:www.dogyun.com主机配置我搞的是最低款优惠后14.4元/月的,配置单核,512MB内存,10GB硬盘,300GB/50Mbps月流量。基本信息DogYun的VPS主机管理集成在会员中心,包括...

青云互联:洛杉矶CN2弹性云限时七折,Cera机房三网CN2gia回程,13.3元/月起

青云互联怎么样?青云互联是一家成立于2020年6月份的主机服务商,致力于为用户提供高性价比稳定快速的主机托管服务,目前提供有美国免费主机、香港主机、香港服务器、美国云服务器,让您的网站高速、稳定运行。目前,美国洛杉矶cn2弹性云限时七折,美国cera机房三网CN2gia回程 13.3元/月起,可选Windows/可自定义配置。点击进入:青云互联官网青云互联优惠码:七折优惠码:dVRKp2tP (续...

Spinservers:美国独立服务器(圣何塞),$111/月

spinservers是Majestic Hosting Solutions,LLC旗下站点,主营美国独立服务器租用和Hybrid Dedicated等,spinservers这次提供的大硬盘、大内存服务器很多人很喜欢。TheServerStore自1994年以来,它是一家成熟的企业 IT 设备供应商,专门从事二手服务器和工作站业务,在德克萨斯州拥有40,000 平方英尺的仓库,库存中始终有数千台...

softreference为你推荐
mergefieldWORD 邮件合并中----插入的域{MERGEFIELD "班级"},原始1201班想得到前连个字符怎么改域代码?存储区域网络网络存储技术的SAN(存储区域网络)的优点scriptmanager怎么解决ScriptManager和Jqery冲突各大网站有没有很好玩的网站啊公众号付费阅读如何申请微信付费阅读功能无处不在的意思人山无处不花枝的意思是什么shoujiao手机板aoblox怎么从英文变成中文微信网页版登陆首页微信网页版怎么用?微信网页版怎么登陆?gas是什么意思GC什么意思云办公平台什么叫云办公啊?谁能通俗的给我讲下
游戏服务器租用 域名主机管理系统 免费com域名申请 花生壳免费域名 mediafire下载工具 56折 轻量 ftp教程 美国网站服务器 沈阳主机托管 dnspod lamp是什么意思 lamp架构 测速电信 电信主机托管 西部主机 阿里云宕机故障 硬防 租主机 什么是云主机 更多