Java虚拟机学习 - 对象引用强度

【QT+VS】如何在现有VS项目中添加Qt界面?【全网最详细】 VS项目有了,就缺个QT界面,怎么办呢?这篇文章帮你一键搞定! 阅读详情

无论是通过计数算法判断对象的引用数量,还是通过根搜索算法判断对象引用链是否可达,判定对象是否存活都与“引用”相关。

引用主要分为 :强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)、虚引用(PhantomReference) 四种,引用的强度依次骤减。

强引用:

就是指在代码之中普遍存在的,类似:“Object objectRef = new Obejct”,这种引用,只要强引用还存在,永远不会被GC清理。

软引用:

用来描述一些还有用,但并非必须存在的对象,当Jvm内存不足时(内存溢出之前)会被回收,如果执行GC后,还是没有足够的空间,才会抛出内存溢出异常。

通过SoftReference类来实现软引用,SoftReference很适合用于实现缓存。另,当GC认为扫描的SoftReference不经常使用时,可会进行回收。

使用方法:

		User user = new User();
		SoftReference<Object> softReference  = new SoftReference<Object>(user);
		softReference.get();

弱引用

弱引用也是用来描述一些还有用,但并非必须存在的对象,它的强度会被软引用弱些,被弱引用关联的对象,只能生存到下一次GC前,当GC工作时,无论内存是否足够,都会回收掉弱引用关联的对象。JDK通过WeakReference类来实现。

当获取时,可通过weakReference.get方法获取,可能返回null

可传入一个ReferenceQueue对象到WeakReference构造,当引用对象被表示为可回收时,isEnqueued返回true

                User user = new User();
		WeakReference<User> weakReference = new WeakReference<User>(user);
		weakReference.get();
		
		ReferenceQueue<User> referenceQueue = new ReferenceQueue<User>();
		WeakReference<User> weakReference2 = new WeakReference<User>(user, referenceQueue);
		//当引用对象被标识为可回收时  返回true,  即当user对象标识为可回收时,返回true
		weakReference.isEnqueued();

虚引用

虚引用称为“幻影引用”,它是最弱的一种引用关系,一个对象是否有虚引用的存在,完全不会对生存时间构成影响。为一个对象设置虚引用关联的唯一目的就是希望能在这个对象被GC回收时收到一个系统通知。通过PhantomReference类实现。

值得注意的是:phantomReference.get方法永远返回null, 当user从内存中删除时,调用isEnqueued会返回true

		User user = new User();
		ReferenceQueue<User> referenceQueue = new ReferenceQueue<User>();
		PhantomReference<User>  phantomReference = new PhantomReference<User>(user, referenceQueue);
		//即当user对象标识为可回收时,返回true
		System.out.println(phantomReference.isEnqueued());
		//永远返回null
		System.out.println(phantomReference.get());

其他相关类:

		WeakCache weakCache  = new WeakCache();
		SoftCache softCache = new SoftCache();
		WeakHashMap weakHashMap  = new WeakHashMap();


  当垃圾回收机制运行,扫描引用关系,GC会对这三种类型的引用进行不同的处理,简单来说,GC首先会判断所扫描到的引用是否为Reference类型,如果为Reference类型,且其所引用的对象无强引用,则认为该对象为相应的Reference类型,之后GC在垃圾回收时这些对象则根据Reference类型的不同进行相应处理。

             本文原文链接:http://blog.youkuaiyun.com/java2000_wl/article/details/8090276 转载请注明出处!

多标签分类怎么做?(Python) 首先简单介绍下,多标签分类与多分类、多任务学习的关系: 多分类学习(Multi-class):分类器去划分的类别是多个的,但对于每一个样本只能有一个类别,类别间是互斥的。例如:分类器判断这只动物是猫、狗、猪,每个样本只能有一种类别,就是一个三分类任务。常用的做法是OVR、softmax多分类 阅读详情

相关推荐

Python3.8下MvCameraControl.dll加载失败?3种方法彻底解决FileNotFoundError

本文针对Python3.8及以上版本在Windows平台调用MvCameraControl.dll时出现的FileNotFoundError问题,深入剖析了其根源在于Python 3.8引入的DLL加载安全机制变更。文章提供了三种核心解决方案:显式指定DLL完整路径、使用os.add_dll_directory()添加可信目录,以及利用ctypes的winmode参数进行精细控制,并给出了工程化封装建议,帮助开发者彻底解决此兼容性问题。

weixin_29093017的博客 191

android 代码对比工具,Android 四种引用比较与源码分析

目录介绍0.关于四种引用0.1 引用说明0.2 关于Java下ref包和Android下ref包1.强引用1.0 关于强引用引用的场景1.1 强引用介绍1.2 强引用的特点1.3 注意相互引用情况2.软引用2.0 关于SoftReference软引用2.1 软引用应用场景2.2 软引用的简单使用2.3 软引用的特点2.4 实际应用案例2.5 注意避免软引用获取对象为null3.弱引用3.0 关于W...

weixin_39604516的博客 700

PLUS模型土地利用变化模拟使用简介

因子包括自然因子如社会因子,通过计算整理得到新图层,并以tif文件输出到驱动因子的文件夹里,驱动因子文件夹里存放的是tif文件格式。线性回归使用提供的所有的LULC资源数据,可以选择往后预测的年数,选择好数据之后,可以得出预测的每一年的每一用地类型面积数据。在此过程之后,可以继续使用此CARS输入的数据继续模拟,也可返回二(3)中CARS模块,重新输入不同的年份预测。在此过程之后,可以继续使用此CARS输入的数据继续模拟,也可返回二(3)中CARS模块,重新输入不同的年份预测。

qq_42831270的博客 5807

android weakreference 用法,(源码)详细分析Android中的引用机制Reference(WeakReference、SoftReference、PhantomReference...

Android进阶之路系列:http://blog..net/column/details/16488.html1、前言在java中,我们知道一般情况下当一个对象被其他对象引用时,该对象则不会被回收。但是有时我们虽然需要使用该对象,但又希望不影响回收。比如在Activity中以内部类的方式创建了一个Handler,这个Handler就会隐式的持有一个activity的引用,当这个Handler被一...

weixin_29202213的博客 433

Linux音频处理实战:从MP3解码到ALSA播放的完整流程解析

本文详细解析了Linux环境下从MP3文件解码到通过ALSA播放音频的完整实战流程。文章深入剖析了MP3文件结构、PCM原始音频数据格式,并提供了使用ffmpeg/mpg123解码、以及利用ALSA库进行C语言编程播放的实用代码示例,帮助开发者彻底掌握Linux音频处理的核心链路。

weixin_29206669的博客 72

(三十九)Flask 多应用架构(Multiple Apps)与 DispatcherMiddleware 实战解析

(三十九)Flask 多应用架构(Multiple Apps)与 DispatcherMiddleware 实战解析

孤寒者的博客 1万+

Java中的四种引用以及ReferenceQueue和WeakHashMap的使用示例

简介: 本文主要介绍JAVA中的四种引用: StrongReference(强引用)、SoftReferenc(软引用)、WeakReferenc(弱引用)、PhantomReference(虚引用)的作用。同时我们还将介绍ReferenceQueue和WeakHashMap的功能和使用示例。 欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.c...

weixin_30328063的博客 159

基于3D相机的人体穴位识别与标注系统——完整Python实现方案

摘要 本文提出了一种基于3D相机的人体穴位识别与标注系统完整实现方案。系统采用Intel RealSense D435相机实时采集RGB-D数据,结合MediaPipe Pose模型进行人体33个关键骨骼点的三维姿态估计。通过建立穴位与骨骼关键点的映射关系,利用相机内参和深度信息将二维图像坐标转换为三维空间坐标。系统采用模块化设计,包含数据采集层、算法处理层、坐标转换层和可视化层,实现了穴位定位、三维坐标转换和点云可视化功能。关键技术包括:基于骨度折量法的穴位映射算法、深度图像到三维点云的转换方法,以及Op

AI的内部世界的博客 271

Java中的四大引用(强引用,弱引用,软引用,虚引用)

引用这个概念经常被提及,今天总结一下。 强引用 强引用即(StrongReference)我们最常使用的引用,A a=new A()。这个a就是一个强引用。 软引用 即(SoftReference), Object obj = new Object(); SoftReference sf = new SoftReference(obj); obj = null; sf.g

路漫漫 始于足下 843

【ArcGIS微课1000例】0149:Geographic Imager6.6下载安装教程

首先保证电脑上安装对应版本的PS软件,笔者安装的是PS2023(V24.7)版本,然后安装本软件。保持以上窗口运行状态,然后打开PS,自动弹出如下窗口。勾选【Automatically checkout LIcense】,点击Close。双击setup开始安装,点击【确认】,一路默认安装到底。驱动器:DVD-ROM驱动器(用于DVD版本)处理器:2GHz或更快的英特尔或AMD处理器。安装完成后,将Crack中的所有文件拷贝到。硬盘:600 MB的可用硬盘空间用于安装。内存:4GB内存(建议8GB或更高)。

智慧空间实验室 1219

YOLOv11改进 - C3k2融合 | C3k2融合CBSA 收缩 - 广播自注意力:轻量级设计实现高效特征压缩,优化处理效率 | NeurIPS 2025

本文介绍收缩 - 广播自注意力(CBSA)((Contract-and-Broadcast Self-Attention))机制,并将其集成到YOLOv11中。传统注意力机制存在黑盒难理解、计算复杂度高的问题,CBSA通过算法展开推导出本质上可解释且高效的注意力机制。它先从输入数据中选出少量代表性tokens,接着对代表进行收缩计算,再将结果广播给所有原始数据。该机制计算量线性增长,具有明确数学解释,还能统一多种注意力机制。我们将CBSA代码集成到YOLOv11的C3k2模块中。实验证明,改进后的YOLOv

魔改工程师的博客 852

Java虚拟机学习(9):对象引用强度

无论是通过计数算法判断对象的引用数量,还是通过根搜索算法判断对象引用链是否可达,判定对象是否存活都与“引用”相关。 引用主要分为 :强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)、虚引用(PhantomReference) 四种,引用的强度依次骤减。 强引用 就是指在代码之中普遍存在的,类似:“Objec

会飞的鱼 466

AgentScope Java 2.0 最佳实践:9 个完整示例手把手带你开发 Java‑Agent

本文基于9 个完整示例,深入剖析从基础对话(BasicChatExample)、工具调用(@Tool 注解)、结构化输出(POJO Schema)、ToolGroup 自主管理、MCP 外部工具集成、Hook 生命周期监控、Spring Boot SSE 流式 Web、JsonSession 会话持久化到中断恢复的全链路实战教程。

program哲学 1639

java怎么声明对象强可达_Java虚拟机学习 - 对象引用强度

无论是通过计数算法判断对象的引用数量,还是通过根搜索算法判断对象引用链是否可达,判定对象是否存活都与“引用”相关。引用主要分为 :强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)、虚引用(PhantomReference) 四种,引用的强度依次骤减。强引用:就是指在代码之中普遍存在的,类似:“Object objectRef...

weixin_42554408的博客 148

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Java虚拟机学习 - 对象引用强度 ( 8 )

无论是通过计数算法判断对象的引用数量,还是通过根搜索算法判断对象引用链是否可达,判定对象是否存活都与“引用”相关。 引用主要分为 :强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)、虚引用(PhantomReference) 四种,引用的强度依次骤减。 强引用:   就是指在代码之中普遍存在的,类似:“Object obje...

weixin_33749131的博客 70

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

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

java虚拟机学习

在网上找到了一篇很好的关于java虚拟机的文章,特转载过来学习学习。   Java虚拟机学习 - 体系结构 内存模型 Java虚拟机学习 - 对象访问 Java虚拟机学习 - 垃圾收集算法 Java虚拟机学习 - 垃圾收集器 Java虚拟机学习 - 对象内存分配与回收 Java虚拟机学习 - 查看JVM参数及值的命令行工具 Java虚拟机学习 - JDK可视

_社会主义好_ 720

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: Java虚拟机学习 - JDK可视化监控工具
下一篇: ExtJs - grid 合并单元格 跨行跨列
胸口碎大石_
博客等级 码龄17年 1154粉丝 82原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值