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)
上一篇 2025年10月8日 下午3:43
下一篇 2025年10月8日 下午4:15


相关推荐

  • Oracle技术之临时表的undo生成

    Oracle技术之临时表的undo生成

    2021年8月24日
    59
  • 服务器系统详细安装步骤图_服务器系统安装教程详细步骤

    服务器系统详细安装步骤图_服务器系统安装教程详细步骤一、首先按住ctrl+alt+delete进行对KVM的重启操作,在进行重启的过程中按F2,进入BIOS界面,对RAID进行磁盘阵列:1、选择DeviceSetting,进入界面后选择RAIDControllerinSlot4:进行操作。2、先选择VirtualDiskManagement命令,查看系统是否已经进行了磁盘阵列。(如果已经存在进行步骤3,如果未存在进行步骤4)3、按Esc返回上一级,选择ConfigurationManagem…

    2026年4月17日
    6
  • pycharm代码整体缩进(左移右移)

    pycharm代码整体缩进(左移右移)整体右移 缩进 鼠标全选住要缩进的代码 按 tab 整体左移 反缩进 鼠标全选住要缩进的代码 按 tab shift

    2026年3月27日
    2
  • 严苛模式(StrictMode)

    严苛模式(StrictMode)

    2021年11月29日
    41
  • DDR4原理及硬件设计

    DDR4原理及硬件设计DDR4 的工作原理以及寻址方式 DDR4 是什么 DDR4 全称 DDR4 DRAM 与其他 DDRDRAM 一样 是当前电子系统架构中使用最为广泛的的 RAM 存储器 这句话可以分解出 3 个关键字 存储器 DRAM DDR4 先说存储器 说到存储 顾名思义 它是个动词 以生活为例 假如有个酸奶 你不想吃的时候 将酸奶存到某冰箱 某层 某个位置 当你想吃的时候 在某冰箱 某曾 某个位置中取出该酸奶 这个过程 我们称为存储 结合生活 我们可以看到存储要有 3 个关键动作 酸奶放哪了 你得知道 如果不知道放哪了

    2026年3月18日
    1
  • 傻妞机器人新版安装教程「建议收藏」

    傻妞机器人新版安装教程「建议收藏」本文由以下部分组成傻妞基础功能简介。傻妞机器人安装(只对接QQ)傻妞常规设置傻妞对接微信/公众号/TG机器人傻妞重启以及更换机器人QQ傻妞青龙扩展使用。其他一、傻妞功能简介1.傻妞青龙扩展可以发送命令控制青龙任务,添加青龙变量,提交COOKIE,查询资产,查看任务日志等等!可对接其他项目。2.配置扩展在sillyGirl/conf/config.yaml文件配置各种API,让傻妞功能丰富多彩。目前支持返回图片和文本(包括链接)。样例文件见文末。3.自定义文件功能扩展在sill

    2022年6月23日
    1.0K

发表回复

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

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