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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Mac 开启apache PHP

    Mac 开启apache PHP命令行:开启apache服务:sudoapachectlstart停止apache服务:sudoapachectlstop重启服务:sudoapachectlrestart查看版本:httpd-v开启之后打开浏览器输入:localhost,看到Itworks!说明服务正常开启!命令行打开系统隐藏目录:open/etc/apache21.httpd

    2022年7月12日
    26
  • 什么是代码_大专程序员有人要吗

    什么是代码_大专程序员有人要吗什么是代码,什么是数据。代码是能够处理其他数据的数据,而数据是储存信息的数据。数据有时能够变成代码,代码也可以变成数据。甚至,一段数据中某一段,都可以单独拿出来,通过执行器执行(执行器,比如exe的执

    2022年8月1日
    6
  • 非常详细的sift算法原理解析

    非常详细的sift算法原理解析转非常详细的sift算法原理解析<divclass="article-info-box"><divclass="article-bar-topd-flex"><

    2022年6月15日
    30
  • 小米nfc模拟加密门禁卡详细图文教程(实测可用)—————– IC ID CUID卡区别

    小米nfc模拟加密门禁卡详细图文教程(实测可用)—————– IC ID CUID卡区别现在小区虽然都加装了智能门,可以通过手机NFC功能开启或者使用钥匙开启,但是有些用户并不知道原来手机是可以当钥匙使用的。今天我们来学习使用小米nfc模拟加密门禁卡,这样手机就可以变成一把钥匙了。以下是小米nfc模拟加密门禁卡步骤。1、非加密卡直接使用小米钱包的门卡模拟功能即可,如果能直接模拟的就不是加密卡。2、NFC手机支持的频段一般为13.56Mhz卡片,如果是其他门禁卡,手机贴上根本没反应的不可以模拟。3、只能模拟卡片的ID,不支持储值消费等功能。部分门禁等系统只认证卡片ID,所以有可能通过

    2022年5月4日
    257
  • JavaSwing_2.3: JRadioButton(单选按钮)「建议收藏」

    JavaSwing_2.3: JRadioButton(单选按钮)「建议收藏」JRadioButton,单选按钮。

    2022年5月30日
    28
  • windows计算哈希值_哈希校验

    windows计算哈希值_哈希校验哈希算法校验

    2025年11月6日
    4

发表回复

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

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