JAVA WeakReference

Ubuntu虚拟机IP卡在127.0.0.1?别慌,试试这条万能命令 `sudo dhclient` 本文详细解析了Ubuntu虚拟机IP卡在127.0.0.1的常见原因及解决方案,重点介绍了`sudo dhclient`命令的使用方法及其变体,帮助用户快速恢复网络连接。同时提供了网络诊断工具和预防措施,适用于开发者和系统管理员应对网络故障。 阅读详情

在Java 1.2中就引入了java.lang.ref这个包,WeakReference就属于这个包。WeakReference是干嘛的呢,一言弊之,它是和Java中的垃圾回收相关的。如果一个对象只有WeakReference引用它,那么这个对象就可能被垃圾回收器回收。

在什么场合下应用WeakReference呢?

有时我们会碰到一些不能继承的类,如final class, 或者通过Factory创建的对象,它对外只暴露一个接口,我们无法知道它的具体实现类,自然也无法继承它。假如我们要使用一个Widget类,因为某种 缘故,我们无法继承该类来加入某个功能。但是,我们必须将每个Widget对象和某个序列号关联,而Widget本身没有serial number这个属性,这时该怎么做呢?

你也许已经想到,用HashMap!对,像这样:

1.serialNumberMap.put(widget, widgetSerialNumber);


这看起来工作的很好。但是,有个问题:当我们不再需要某个Widget的serial number信息,此时应该从HashMap中将这个Entry移除,如果我们忘记了怎么办?因为HashMap中持有对这个对象的引用,这个对象永远不 会被垃圾回收器回收,这就造成了内存泄漏!这意味着我们需要像没有垃圾回收功能的语言一样,手动管理内存!但是我们用的是Java.....

另一个很常见的问题是缓存。如果使用强引用,那么我们缓存的对象就会一直滞留在内存中,不会被回收,除非我们手动的将其从缓存中移除。此外,这还需要我们决定何时从缓存中移除对象,又一个手动管理内存的问题!

此时,WeakReference就显示出它的价值了。如何创建一个WeakReference呢?很简单:

1.WeakReference<widget> weakWidget = newWeakReference<widget>(widget);
2.Widget w = weakWidget.get();


要注意的是,当调用weakReference.get()可能返回null(意味着指向的对象已经被回收)。其实,对于Widget serial number这个问题,最简单的方法是使用WeakHashMap,它的使用和普通的HashMap完全一样,不同点在于,WeakHashMap的key被实现为一种WeakReference(注意,是key而不是value),当key对象被回收后,WeakHashMap会自动将对应的entry移除。更精确的说,对于一个给定的键,其映射的存在并不阻止垃圾回收器对该键的回收。

Java中有四种类型的引用,按照强弱关系依次为:Strong Reference>Soft Reference>WeakReference> Phantom Reference。

其中,我们平常用的就是Strong Reference,而Phantom Reference很少用到,因此这里不去研究了,那么什么是Soft Reference呢?

Soft Reference和weak reference的区别是:一旦gc发现对象是weak reference可达就会把它放到ReferenceQueue中,然后等下次gc时回收它;当对象是Soft reference可达时,gc可能会向操作系统申请更多内存,而不是直接回收它,当实在没辙了才回收它。像cache系统,最适合用Soft reference。让gc来替我们决定什么时候回收对象以及回收哪些对象。

SAP Joule for Consultants 与 Joule for Developers 全面解读 SAP推出面向不同用户群体的Joule AI助手:开发者版(Joule for Developers)专注于编码提效,嵌入开发工具链辅助生成、重构和测试代码;顾问版(Joule for Consultants)聚焦业务场景,集成SAP云应用知识库,为咨询项目提供方案设计、差距分析和实施指引。两者共享AI底座但功能侧重点不同:开发者版优化技术开发流程,顾问版加速项目交付周期。典型应用场景包括制造业云转型方案制定和ABAP代码迁移,分别展示了两版本在业务决策支持和技术实施中的价值。 阅读详情

相关推荐

Android 白名单保活实战:主流厂商适配指南

本文详细解析了Android应用白名单保活的实战策略,重点针对华为、小米、OPPO、vivo等主流厂商的系统特性,提供了精准的后台设置页面跳转适配方案。文章从基础的前台服务实现讲起,深入讲解了白名单的判断、申请与厂商适配的核心代码与避坑指南,旨在帮助开发者合规、稳定地提升应用后台存活率。

motor的博客 1861

WeakReference 学习和使用

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

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

PAM4信号测试实战:从眼图分析到误码率测量的技术演进

在高速数字系统设计中,信号完整性测试是确保数据传输可靠性的核心环节。其基本原理在于通过时域和频域分析,精确评估信号在传输过程中的质量衰减与失真。随着数据速率向56Gbps及以上演进,传统的NRZ编码面临带宽瓶颈,而PAM4调制技术通过在每个符号周期内承载更多比特信息,成为提升信道效率的关键路径。这项技术的工程价值在于,它允许在相同带宽下实现翻倍的数据吞吐量,这对于数据中心互联、PCIe 6.0及800G以太网等高速接口至关重要。然而,PAM4信号电平间距更小,对噪声和抖动极为敏感,导致其原始误码率显著升高,

weixin_42522817的博客 657

WeakReference的使用

  public class AutoActivity extends Activity { Handler handler = new Handler(){ public void handleMessage(android.os.Message msg) { }; }; @Override protected voi...

xme0715的博客 1620

2024美团秋招硬件开发笔试真题及答案解析

在 Linux 内核的网络设备驱动中,数据链路层的功能通常由网络协议栈的低层(如以太网驱动)实现,而不是作为网络设备驱动的一个独立层次。在 FreeRTOS 中,任务通知(Task Notifications)是一种轻量级的事件传递机制,用于在任务之间或任务与中断之间传递信号。小美正在开发一个简单的密码生成器,其中一个功能是将输入的字符串中的所有字母按字母顺序循环前移一位(即 'a' 变为 'z','B' 变为 'A',以此类推)。它包含了网络设备的各种参数和方法,用于管理网络设备的初始化、配置和操作。

XU157303764的博客 1674

PCL 建筑物点云立面和平面分割提取【2025最新版】

在建筑物点云中,立面点和平面点的法向量存在明显的差异,根据法向量在Z方向的分量设置相应得阈值即可实现立面点与平面点的分割。

点云侠的博客 1960

Java WeakReference 和 SoftReference

在python的标准类库中发现有weakref这个模块,比较有趣。依稀想起在java中似乎也有个叫做WeakReference的类,只是当时没有太留心,此时好奇心起,在网上找到这篇文章,讲的挺好,摘要一下。 在Java 1.2中就引入了java.lang.ref这个包,WeakReference就属于这个包。WeakReference是干嘛的呢,一言弊之,它是和Java中的垃圾回收相关的。如...

897371388 249

黑猫带你学eMMC协议第1篇:全网最全emmc协议中文详讲,这份学习框架图,你值得拥有!!!(持续更新中...)

黑猫带你学eMMC协议第7篇:全网最全emmc写保护详解(write protect) 黑猫带你学eMMC协议第8篇:emmc可靠写详解(Write Reliability) 黑猫带你学eMMC协议第9篇:emmc的分区配置(partitioning) 黑猫带你学eMMC协议第10篇:eMMC命令队列详解(CMDQ) 黑猫带你学eMMC协议第11篇:eMMC擦除详解(erase/trim/discard/sanitize/secure erase/secure trim…) 黑猫带你学eMMC协议第12篇:

黑猫奥利奥的博客 2万+

弱引用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

Unity零基础到进阶 ☀️| Unity中的 GC及优化 超级全面解析 ☆(ゝω・)v 建议收藏!

介绍: 在游戏运行的时候,数据主要存储在内存中,当游戏的数据在不需要的时候,存储当前数据的内存就可以被回收以再次使用。内存垃圾是指当前废弃数据所占用的内存,垃圾回收(GC)是指将废弃的内存重新回收再次使用的过程。 Unity中将垃圾回收当作内存管理的一部分,如果游戏中废弃数据占用内存较大,则游戏的性能会受到极大影响,此时垃圾回收会成为游戏性能的一大障碍点。 本文我们主要学习垃圾回收的机制,垃圾回收如何被触发以及如何提GC收效率来提高游戏的性能。 Unity内存管理机制简介 要想了解垃圾回收如何工作以及何时被

努力前行,总会成为自己心中的那道光 6万+

Python图像处理之光斑分析

光斑是工程中经常出现的图像数据,其特点是目标明确,分布清晰。对光斑图像的分析,主要包括质心定位、目标截取以及半径拟合等。

微小冷的学习笔记 2856

深入理解 java 中的 Soft references & Weak references & Phantom reference

这篇文章中主要介绍了java中的Soft references、Weak references 和Phantom reference,通过讲解这些知识点,例举了几个经典的内存泄露问题。如果你正走在成为一名Java高级工程师的路上,那么这篇文章非常适合你。

踩风火轮的乌龟 8366

多模态轨迹预测:行人、车辆的交互式推理

多模态轨迹预测:行人、车辆的交互式推理 ,人工智能,计算机视觉,大模型,AI,本文围绕多模态轨迹预测中行人与车辆的交互式推理展开,介绍了其定义,即综合多种信息预测交通参与者未来多种轨迹。涵盖基础概念如轨迹表示、模态、交互关系,技术框架包括数据处理、特征提取、预测模型(物理、机器学习、深度学习模型等)及结果评估。还探讨了交互式推理方法、面临的不确定性处理等挑战、应用场景、未来发展方向、相关工具及实际案例,展现了该技术在智能交通等领域的重要性与发展潜力。​

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 14万+

java WeakReference 用法 原理

WeakReference(弱引用)是Java中的一种特殊引用类型,当垃圾回收器扫描时,只要对象仅被弱引用关联且没有其他强引用,就会被立即回收。与强引用不同,弱引用不会阻止垃圾回收。典型应用包括实现内存敏感缓存,当内存不足时自动清除缓存条目,避免内存泄漏。使用WeakReference时需注意配合ReferenceQueue进行清理,并处理get()返回null的情况。相比SoftReference(内存不足才回收),WeakReference回收更激进。主要用途包括规范化映射、缓存和监听器列表等场景,可有

zfj321的博客 1674

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

关于 Java 中的 WeakReference

一. 简介 WeakReference 如字面意思,弱引用,当一个对象仅仅被weak reference(弱引用)指向, 而没有任何其他strong reference(强引用)指向的时候, 如果这时GC运行, 那么这个对象就会被回收,不论当前的内存空间是否足够,这个对象都会被回收。 二. 认识WeakReference类 WeakReference 继承 Reference,其中只有两个构造函数: public class WeakReference<T> extends Reference&

weixin_42814000的博客 1788

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

深入理解 Java WeakReference

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

m0_72256543的博客 1213

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java WeakReference和SoftReference的区别

转载自:http://blog.youkuaiyun.com/zhandoushi1982/article/details/8745027 在Java 1.2中就引入了java.lang.ref这个包,WeakReference就属于这个包。WeakReference是干嘛的呢,一言弊之,它是和Java中的垃圾回收相关的。如果一个对象只有WeakReference引用它,那么这个对象就可能被垃圾回收

hello_tree的专栏 3700

关于Java中的WeakReference

https://www.jianshu.com/p/964fbc30151a 一. 简介 在看ThreadLocal源码的时候,其中嵌套类ThreadLocalMap中的Entry继承了WeakReferenc,为了能搞清楚ThreadLocal,只能先了解下了WeakReferenc(是的,很多时候为了搞清楚一个东西,不得不往上追好几层,先搞清楚其所依赖的东西。) 下面进入正题,WeakRe...

z69183787的专栏 648

Java中关于WeakReference和WeakHashMap的理解

新美大的10月11日的笔试中有一道选择题,让选择函数返回结果,代码如下: 1 private static String test(){ 2 String a = new String("a"); 3 WeakReference<String> b = new WeakReference<String>(a); 4 ...

博客园搬家测试账号 155

ZT JAVA WeakReference

JAVA WeakReference 分类: JAVA 2012-08-28 16:08 305人阅读 评论(0) 收藏 举报 javareferencehashmapcacheclassnull 在Java 1.2中就引入了java.lang.ref这个包,WeakReference就属于这个包。WeakReference是干嘛的呢,一言弊之,它是和 Java中的垃圾回收相关的...

weixin_30701521的博客 66

weakreference java_Java弱引用(WeakReference)的理解与使用

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

weixin_36076139的博客 139

Java中的弱引用WeakReference详解

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

OceanSky的专栏 2434

Java学习笔记:WeakReference

本文是自己学习的一个总结,主要学习资料来自Java文档和以下链接。 https://brightloong.github.io/2018/05/27/关于Java中的WeakReference/#more @[TOC]( ) 1、WeakReference简介 这个类其实是对应着JVM中的弱引用的概念。与此类似的还有强引用,虚引用,软引用。 弱引用的特征是,一旦弱引用被GC注意到,那弱引用的引用对象就会被回收。但是弱引用本身不会被回收。 一开始是为了弄懂ThreadLocal才来学习WeakRefere

sinat_38393872的博客 314

Java的WeakReference和SoftReference

在Java 1.2中就引入了java.lang.ref这个包,WeakReference就属于这个包。WeakReference是干嘛的呢,一言弊之,它是和Java中的垃圾回收相关的。如果一个对象只有WeakReference引用它,那么这个对象就可能被垃圾回收器回收。         在什么场合下应用WeakReference呢? (1) 有时我们会碰到一些不能继承的类,如final cla

zhandoushi的专栏 4795

Java WeakReference

关于WeakReference的定义引用维基百科定义 在计算机程序设计中,弱引用与强引用相对,是指不能确保其引用的对象不会被垃圾回收器回收的引用。一个对象若只被弱引用所引用,则被认为是不可访问(或弱可访问)的,并因此可能在任何时刻被回收。一些配有垃圾回收机制的语言,如Java、C#、Python、Perl、Lisp等都在不同程度上支持弱引用。 1. WeakReference引用的...

御风而行 1322
上一篇: Android !No Launcher activity found!错误
下一篇: Ubuntu下安装和配置Apache2
devilkin64
博客等级 码龄19年 16粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值