设计模式之WeakReferences

详解Java弱引用(WeakReference)的理解与使用 主要介绍了Java弱引用(WeakReference)的理解与使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 立即下载

看到别人介绍的WeakSingleton,觉得不错哦。

WeakSingleton是Singleton的改进版。Singleton好像翻译成单例模式,一般做法就是把类的构造函数做成private,然后提供一个static public的方法来获得类的实例。在类里面有一个static private 的成员变量,每次都是用这个实例的。

为什么要改进呢,因为类里面那个static private 的变量会一直在那里,占用资源,不仅仅是内存资源,可能还会占用比如数据库连接这样的资源,如果你有不经常使用,就希望他能灵活一点,有人用 (一个或多人)的时候,就留着,没人用的时候就释放掉。

怎么做呢,就是使用Weak References,呵呵,当初看《Thinking in Java》的时候,这个概念搞的挺晕,还有另外一个概念是Phatom Reference。复习复习吧,所谓Weak Reference呢,就是说没有别人引用的话,这个对象就会被垃圾收集器回收掉。嗯,待会把书翻出来再看看。

写些代码看看吧:

public class WeakSingleton {
 static private WeakSingleton instance = null;

 synchronized static public WeakSingleton getInstance() {
  if (instance == null) {
   instance = new WeakSingleton();
  }
  return instance;
 }

 private WeakSingleton() {
  // Constructor
 }
}

 

详细介绍请看 http://cpan.uwinnipeg.ca/htdocs/Class-WeakSingleton/Class/WeakSingleton.html

ChatGPT Plus账号被降智?3个实用检测方法+终极解决方案(附国内支付指南) 本文针对ChatGPT Plus账号性能下降问题,提供了3个科学检测方法和系统级解决方案。通过详细分析症状、专业诊断技巧和优化策略,帮助用户有效应对GPT-4o等高级功能失效、响应质量下降等问题,特别包含国内用户关心的支付方案和账号管理建议。 阅读详情

相关推荐

OpenVINS实战指南:从环境搭建到RGB-D相机实时建图

本文提供了一份详细的OpenVINS实战指南,涵盖从Ubuntu与ROS环境搭建、依赖安装与编译调试,到连接RGB-D相机进行实时建图的完整流程。重点解决了RealSense D435i等设备的驱动配置、话题对齐及常见问题,并分享了传感器标定与性能优化技巧,帮助开发者快速实现稳定高效的视觉惯性里程计系统。

weixin_29201313的博客 484

WeakReference在android中的使用场景

android中绝大部分内存泄漏都是Context导致的,应为context的传递实在是太多了。 基本原理就一条,如果class B持有class A,而class B的生命周期比class A长,A要销毁但是因为B的引用而无法销毁那么leak就发生了。 实际代码中,class B一般是异步代码(执行时间长且不确定)或服务(一般和UI无关),class A是Context持有者或者就是Cont...

firedancer0089的专栏 2430

dummy机械臂代码学习(六)

CLI-Tool文件夹下又包含四个子文件夹,以及一个gitignore文件、一个run_shell.py的python文件、一个run.bat文件和一个zadig exe文件。库解析命令行参数,并根据不同的命令执行相应的操作。Zadig是一个用于Windows操作系统的开源工具,它的主要功能是安装和配置USB驱动程序。的目的呢就是确保在版本控制过程中,不必要的或自动生成的文件被忽略掉,来保持代码仓库的干净和整洁。,DummyStudio的软件作者已放在GitHub,我们主要看CLI-Tool文件夹就行。

jumaohhh的博客 1432

Java弱引用(WeakReference)的理解与使用

当一个对象仅仅被weak reference指向, 而没有任何其他strong reference指向的时候, 如果GC运行, 那么这个对象就会被回收。如果存在强引用同时与之关联,则进行垃圾回收时也不会回收该对象。

IT熊的专栏 1万+

用Pixel5玩转AOSP:从零开始定制Android13系统(含GMS集成方案)

本文提供了一份详尽的Pixel 5 AOSP定制指南,涵盖从环境搭建、源码下载、系统编译到刷机的完整流程。重点解决了原生AOSP缺失Google移动服务(GMS)的难题,分享了从官方镜像提取并集成GMS组件的实战方案,助你打造独一无二的Android 13系统。

sam99的博客 527

Android 音频源码分析——音量调节流程

源码分析基于android9.0 一、声音类型 对于大多数手机用户来说,操作手机音量按键可以看到,声音类型分为四种:媒体、铃声、闹钟、通话,但是其系统内部则分为十几种类型。 声⾳类型用来区分不同播放用途及播放设备,包含11中类型 定义在 frameworks/base/media/java/android/media/AudioSystem.java中 /** Used to identify the default audio stream volume */ public static final in

奋斗的菜鸟ing 3819

WeakReference是什么,什么时候要使用WeakReference

一个对象要被回收,需要满足两个条件: 1.没有被任何对象引用 2.GC被执行了 强引用(StrongReference) Object o = new Object(); 在现实情况中,当我们创建对象时都采用的是上面的方式,此时,引用会保存在栈中,而引用的内容会被保存在堆中。只要这种强引用还存在,GC执行时,即使是在内存不足时,JVM宁愿抛出OutofMemoryError来终止程序,也不会回收...

BoldFruit的博客 2285

【WebRTC】【Unity】Unity Web RTC1-Unity中简单实现远程画面

平台:基本常用平台包括安卓,苹果(max和IOS),Windows64,Linux都行。10. 注意,如果从移动设备浏览器连接服务,信令服务器的SSL证书一定要先设好。想要在Unity中实现实时远程桌面,找到了Render Streaming这个手段,本篇介绍相应的使用方法和实例。8. 打开电脑浏览器,地址栏输入http://127.0.0.1,点击Receiver Sample。新建Unity项目,模板选Third Person,Project Name随意。启动App,控制台出现如下信息表示成功。

每日出拳老爷子的博客 2518

弱引用WeakReference作用与使用场景

在分析threadLocal源码时,发现有使用弱引用WeakReference,在之前总结GC的时候,也曾简单介绍java引用类型(《jvm GC算法类型》第6节),本文在详细总结下WeakReference的使用方法。 java 4种引用类型: 强:A a=new A(); 此时引用a强引用对象A;不会被GC 软:SoftReference.java,在内存不够时引用对象会被GC; 弱:WeakReference.java,每次GC都会被回收; 虚:PhantomReference.java,每次GC

abcwywht的博客 1539

Altium Designer(AD)仿真实验操作指南

1:运行仿真2:设置仿真3:放置电源模块4:放置器件模块5:探针。

XU157303764的博客 8899

老 MacBook 部署 OpenClaw:比 Windows 更稳定

老款 MacBook 在运行 OpenClaw 时,Linux 系统相比 Windows 系统具有更好的稳定性和性能。本文将从多个维度对比 Linux 和 Windows 在老款 MacBook 上运行 OpenClaw 的表现,帮助您选择更合适的操作系统。

一键难忘的博客 2096

弱引用——WeakReference——所引用的对象的回收规则

弱引用 WeakReference 相关的GC回收规则 当一个对象仅被一个弱引用实例引用(持有)时,这个对象就会被GC回收。 注意 上述规则中,会被GC回收的是弱引用实例引用的对象,而非弱引用实例本身 如果显式地声明了一个变量E e = new E();指向一个对象,而这个对象e被WeakReference实例持有引用,则由于对象的引用被变量e持有,对象并不符合上述回收规则,因此对象至少在变量e的作用域范围内都不会被回收。 例如: class Apple{ String color; void Ap

李思苇 1万+

Android Framework WMS面试题及参考答案

什么是 WindowManagerService(WMS)?它的作用是什么? WindowManagerService(WMS)是 Android 系统中非常重要的一个系统服务。它运行在系统进程(system_server 进程)中。 从本质上来说,WMS 是 Android 窗口管理系统的核心。它负责管理系统中的所有窗口,包括应用程序窗口、系统窗口(如状态栏、导航栏)等。 它的主要作用有很多。首先是窗口的创建和销毁。当一个应用请求创建一个窗口时,WMS 会协调各个模块完成窗口的创建工

大模型大数据攻城狮的专栏 2164

ThreadLocal如何实现?

这是我上周的帖子的后续文章,在那篇文章中我解释了ThreadLocal用法的动机 。 从帖子中我们可以回想起,如果您希望每个线程都有一个独立初始化的变量副本,则ThreadLocal确实是一个很酷的概念。 现在,好奇的人可能已经开始问“我如何在Java中实现这样的概念”? 否则,您可能会觉得这不是一个有趣的话题–毕竟,您在这里所需的只是一张地图 ,不是吗? 在处理ThreadLocal ...

最佳 Java 编程 297

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

关于Java中的WeakReference

WeakReference 阅读原文请访问我的博客BrightLoong's Blog 一. 简介 在看ThreadLocal源码的时候,其中嵌套类ThreadLocalMap中的Entry继承了WeakReferenc,为了能搞清楚ThreadLocal,只能先了解下了WeakReferenc(是的,很多时候为了搞清楚一个东西,不得不往上追好...

brightloong的博客 1874

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

基础-WeakReference

这四种状态只是一种说明,实际上Reference对象并没有任何的status字段,不过作为队列中的节点,它有一个next字段,当状态为Active时,其next为null,而当其为其它状态时,next一定不为null,而是指向队列中的下一个引用,如果其本身就是队列中的最后一个元素,则next指向其自身。可见,referent属性存储了其所引用的对象,而queue这个字段是可选的,前面说到,queue的作用保存对象将被回收的引用,由垃圾回收器负责往里面添加,但如果不提供,则没有这一过程。

chuyouyinghe的专栏 517

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Java中的弱引用WeakReference详解

最近再看ThreadLocal源码,其中内部类ThreadLocalMap中的Entry类继承了WeakReference,其表示key的ThreadLocal对象是通过弱应用指向,如果外部没有强引用对象指向ThreadLocal对象的时候就会被GC回收掉,不论当前的内存空间是否足够,这个对象都会被回收 一、WeakReference源码,其中只有两个构造函数 public class WeakReference<T> extends Reference<T> { //(1).

OceanSky的专栏 2436

深入理解 Java WeakReference

WeakReference 在 Java 内存管理体系中占据着独特的地位,它为开发者提供了一种在特定场景下精细控制对象生命周期的手段。通过深入理解其原理、应用场景以及注意事项,我们能够在开发中更好地利用弱引用来优化内存使用,避免因对象持有不当导致的内存泄漏问题,提升应用程序的性能与稳定性。无论是构建复杂的缓存系统,还是处理对象间微妙的生命周期依赖关系,WeakReference 都是我们手中的有力武器,合理运用它,能让 Java 程序在内存这片 “战场” 上更加游刃有余。

m0_72256543的博客 1213

WeakReference 与 SoftReference 的区别

WeakReference 和 SoftReference 的区别

ADS李的博客 813

Android性能优化

Android性能优化方案布局优化尽量减少layout层级,减少界面绘制的工作量。 采用,标签自定义View的绘制onDraw中不要创建大量的局部对象。因为onDraw方法会被频繁调用,这样就会在一瞬间产生大量的临时对象,不仅会占用过多内存还会导致系统频繁GC,降低程序执行效率。 onDraw中不要做太多耗时才操作。内存优化 静态变量导致的内存泄露 示例:一个外部的静态Context变量引用了

Elven_Shi的专栏 715

WeakReference的使用和在Android中的应用

先介绍下WeakReferenceWeakReference在java中被称为弱引用,其父类为Reference,其兄弟还有强引用,软应用,虚引用.一般强引用指向的对象java虚拟机是 不会主动回收的(除非java虚拟机判断该引用对象不再使用了,例如在某个方法中的局部变量,引用会从方法栈出弹出),而弱引用不一样,其回 收时机是下一次java发生gc动作时(此时没有其他的强引用指向它,并且该强应用

aa671125的专栏 964

Java中四种引用详解以及对比区别

文章目录1 四种引用1.1 强引用1.2 软引用(SoftReference)1.3 弱引用(WeakReference)1.4 虚引用(PhantomReference)2 区别别比较 1 四种引用 Java 中一共有 4 种类型的引用 : StrongReference、 SoftReference、 WeakReference 以及 PhantomReference (虚引用), 这 4 种类型的引用与 GC 有着密切的关系, 让我们逐一来看它们的定义和使用场景 1.1 强引用 本章前文介绍的引用实

上善若泪 5989

JAVA强引用、软引用、弱引用、虚引用小结

JAVA中将引用类型分为强引用、软引用、弱引用和虚引用四种。强引用(StrongReference) 强引用是我们程序中普遍存在的,比如如下代码中的obj和str都是强引用类型。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。Object ob

候鸟的专栏 891

WeakReference 学习和使用

前言: 看到篇帖子, 国外一个技术面试官在面试senior java developer的时候, 问到一个weak reference相关的问题. 他没有期望有人能够完整解释清楚weak reference是什么, 怎么用, 只是期望有人能够提到这个concept和java的GC相关. 很可惜的是, 20多个拥有5年以上java开发经验的面试者中, 只有两人知道weak reference的存在, 而其中只有一人实际用到过他. 无疑, 在interviewer眼中, 对于weak reference的理解和

成功不必在我,而功力必不唐捐! 1574

(转)Java中的四种引用

强引用(Strong Reference) 强引用就是我们经常使用的引用,其写法如下 1 StringBuffer buffer = new StringBuffer(); 上面创建了一个StringBuffer对象,并将这个对象的(强)引用存到变量buffer中。是的,就是这个小儿科的操作(请原谅我这样的说法)。强引用最重...

weixin_30752377的博客 594
上一篇: 看了下 ROR
下一篇: 两个和尚的故事
decision
博客等级 码龄21年 0粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值