Java SoftReference

Java SoftReferenceSoftReference的语义就是当内存不够用的时候,GC会回收SoftReference所引用的对象。所以,在memorysensitive的程序中将某些大型数据设置成SoftReference再合适不过了。创建一个SoftReference:[code="java"]Objectobj=newObject();SoftReferencesoftRef=…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
SoftReference的语义就是当内存不够用的时候,GC会回收SoftReference所引用的对象。所以,在memory sensitive的程序中将某些大型数据设置成SoftReference再合适不过了。

创建一个SoftReference:

Object obj = new Object();
SoftReference softRef = new SoftReference(obj);
obj = null;

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

使用SoftReferene:

Object obj2;
obj2 = sr.get();
if (obj2 == null) // GC freed this
sr = new SoftReference(obj2 = new Object());

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

Object obj2;
obj2 = sr.get();
if (obj2 == null) {
sr = new SoftReference(new Object());
obj2 = sr.get();
}

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

文章出处 http://blog.csdn.net/historyasamirror/article/details/6076505

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195884.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Qt中使用Json

    Qt中使用Json

    2021年11月19日
    64
  • Map转json遇到一些问题

    Map转json遇到一些问题最近发现了一个问题,通过查看用户的活跃度发现了奇怪的事情,有的用户访问某一个接口没有问题,而一些奇葩用户访问这一接口就是不成功,经过查看,原来是Android系统4.4以下map转换json的时候出现了问题,具体是什么了,下面我们来分析分析。第一,利用”org.json.JSONObject”下的JsonObject时,4.4以下的系统出现“=”的问题。比如:Map

    2022年6月20日
    34
  • connectionStrings节的配置方法[通俗易懂]

    connectionStrings节的配置方法[通俗易懂]ASP.NETweb.config中数据库连接字符串connectionStrings节的配置方法作者:字体:[增加 减小]类型:转载ASP.NETweb.config中数据库连接字符串connectionStrings节的配置方法,需要的朋友可以参考一下在ASP.NET开发的网站根目录,有一个名为web.co

    2022年5月21日
    48
  • burp suite的安装与基本使用

    burp suite的安装与基本使用1.burpsuite的下载可以在官网上下载,https://portswigger.net/burp/,除了这个社区版还有专业版,不过需要付费但是会给你一个月的试用期。安装burp会用到jdk,所以必须先配置好jdk,下载安装自行百度。2.对于初学者如果想用专业版可以在网上找激活成功教程版本,或者购买正版,社区版和专业版之间的主要区别如下:1)BurpScanner…

    2022年7月12日
    23
  • React 回忆录(四)React 中的状态管理

    React 回忆录(四)React 中的状态管理

    2022年4月3日
    63
  • 如何删除织梦系统power by dedecms

    如何删除织梦系统power by dedecms很多织梦系统底部会自带powerbydedecms,这个powerbydedecms是什么意思呢?这个powerby是织梦系统版权信息,但是织梦系统是开源免费的,所以今天小编就和大家说说如

    2022年6月30日
    25

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号