weakreference_Java中WeakReference,SoftReference,PhantomReference和Strong Reference之间的区别...

weakreference

很长一段时间以来,WeakReference和SoftReference都已添加到Java API中,但是并不是每个Java程序员都熟悉它。 这意味着在Java中使用WeakReference和SoftReference的位置和方法之间存在差距。 参考类对于“垃圾收集 ” 如何工作尤为重要。 众所周知,垃圾收集器从有资格进行垃圾收集的对象中回收内存,但是很少有程序员知道这种资格是根据指向该对象的引用类型决定的。 这也是Java中WeakReference和SoftReference之间的主要区别 。 如果只有弱引用指向该对象,并且它们被急切地收集,则垃圾收集器可以收集该对象;另一方面,当JVM绝对需要内存时,将收集具有SoftReference的对象。 SoftReference和WeakReference的这些特殊行为使它们在某些情况下很有用,例如SoftReference在实现缓存方面看起来很完美,因此当JVM需要内存时,它会删除只有SoftReference指向它们的对象。 另一方面,WeakReference非常适合存储元数据,例如,存储ClassLoader引用。 如果未加载任何类,则没有必要保留ClassLoader的引用,WeakReference会在删除最后一个强引用后立即使ClassLoader有资格进行垃圾回收。 在本文中,我们将探索有关Java中各种参考的更多信息,例如,强引用和幻影引用。

对于那些不知道的人,Java有四种参考:

  1. 强大的参考
  2. 参考不足
  3. 软参考
  4. 幻影参考

强引用是最简单的,因为我们在日常编程中使用它,例如在代码中,String s =“ abc”,引用变量s具有对String对象“ abc”的强引用。 任何附加了“强引用”的对象都不符合垃圾回收的条件 。 显然,这些是Java程序所需的对象。 弱引用使用java.lang.ref.WeakReference类表示,您可以使用以下代码创建弱引用:

Counter counter = new Counter(); // strong reference - line 1
WeakReference<Counter> weakCounter = new WeakReference<Counter>(counter); //weak reference
counter = null; // now Counter object is eligible for garbage collection

现在,只要您使强引用计数器= null,在第1行创建的计数器对象就可以进行垃圾回收; 因为它没有更多的“强引用”和“弱引用”(由引用变量“ weakCounter”引用)无法阻止对Counter对象进行垃圾回收。 另一方面,如果这是“软引用”,则在JVM绝对需要内存之前,不会垃圾收集Counter对象。 Java中的软引用使用java.lang.ref.SoftReference类表示。 您可以使用以下代码在Java中创建SoftReference。

Counter prime = new Counter();  // prime holds a strong reference - line 2
SoftReference<Counter> soft = new SoftReference<Counter>(prime) ; //soft reference variable has SoftReference to Counter Object created at line 2prime = null;  // now Counter object is eligible for garbage collection but only be collected when JVM absolutely needs memory

在将强引用设为空之后,在第2行上创建的Counter对象仅具有一个软引用,该软引用不能阻止对其进行垃圾回收,但可以延迟收集,这在WeakReference情况下非常渴望。 由于SoftReference和WeakReference之间的主要区别 ,SoftReference更适合于缓存,而WeakReference更适合于存储元数据 。 WeakReference的一个方便示例是WeakHashMap,它是Map接口(例如HashMap或TreeMap )的另一种实现,但具有一个独特的功能。 WeakHashMap将键包装为WeakReference,这意味着一旦删除了对实际对象的强引用,WeakHashMap内部存在的WeakReference便不会阻止它们被垃圾收集。

幻象引用是java.lang.ref包中提供的第三种引用类型。 幻影引用由java.lang.ref.PhantomReference类表示。 只要垃圾收集器喜欢,就可以收集仅具有指向它们的幻影引用的对象。 与WeakReference和SoftReference类似,您可以使用以下代码创建PhantomReference:

DigitalCounter digit = new DigitalCounter(); // digit reference variable has strong reference - line 3
PhantomReference<DigitalCounter> phantom = new PhantomReference<DigitalCounter>(digit); // phantom reference to object created at line 3digit = null;

删除“强引用”后,在第3行创建的DigitalCounter对象可以随时进行垃圾回收,因为它仅具有一个指向它的PhantomReference,这不能阻止它进行GC处理。

除了了解WeakReference,SoftReference,PhantomReference和WeakHashMap之外,还有一个称为ReferenceQueue的类值得一提。 您可以在创建任何WeakReference,SoftReference或PhantomReference时提供ReferenceQueue实例,如以下代码所示:

ReferenceQueue refQueue = new ReferenceQueue(); //reference will be stored in this queue for cleanupDigitalCounter digit = new DigitalCounter();
PhantomReference<DigitalCounter> phantom = new PhantomReference<DigitalCounter>(digit, refQueue);

实例的引用将附加到ReferenceQueue,您可以通过轮询ReferenceQueue来使用它执行任何清理。 该图很好地总结了对象的生命周期。

Java中弱的强软幻影参考

这就是Java中WeakReference和SoftReference之间的区别 。 我们还学习了引用类的基础,例如Java和WeakHashMap和ReferenceQueue中的弱引用,软引用和幻像引用。 仔细使用引用可以帮助进行垃圾回收,并在Java中实现更好的内存管理。

翻译自: https://www.javacodegeeks.com/2014/03/difference-between-weakreference-vs-softreference-vs-phantomreference-vs-strong-reference-in-java.html

weakreference

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/342669.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

物联网应用:蓝牙模块在智能门锁中的应用

在现如今&#xff0c;智能门锁的使用已经很广泛了&#xff0c;其原因更多的是智能系统的概念正在逐步改变人们的生活。而基于网络蓝牙的智能门锁、WIFI网络方案智能门锁、基于指纹识别的指纹门锁乃至是人脸识别、虹膜识别的门锁成为了更多人的选择。 智能门锁方案的应用场景 …

【渝粤教育】国家开放大学2018年秋季 0710-22T幼儿园课程活动设计 参考试题

科目编号&#xff1a;0716 座位号 2018-2019学年度第一学期期末考试 工程建设法规 试题 2019年 1 月 一、单选题&#xff08;本大题共5小题&#xff0c;每小题6分&#xff0c;共计30分&#xff09; &#xff08;★请考生务必将答案填入到下面对应序号的答题框中★&#xff09;…

“攻城狮”手把手教你物联网智能生活-内网穿透技术

“攻城狮”手把手教你物联网智能生活-内网穿透技术 内网穿透技术&#xff0c;即实现外网IP访问内网IP而发展起来的一种计算机技术。在了解内网穿透技术之前&#xff0c;我们需要先了解IP和内网外网的概念。 IP&#xff08;InternetProtocol&#xff09;是指的 “网络之间互连…

【渝粤教育】国家开放大学2018年秋季 1042t国际经济法 参考试题

试卷代号&#xff1a;1050 金融理论前沿课题 试题&#xff08;开卷&#xff09; 2019年1月 一、名词解释&#xff08;每小题5分&#xff0c;共15分&#xff09; 1&#xff0e;垄断优势理论&#xff1a; 2&#xff0e;铸币税&#xff1a; 3&#xff0e;赫芬达尔指数&#xff1a;…

光模块常见故障与使用注意事项详解

光模块未正确安装常见故障有哪些&#xff1f;怎样才是正确的安装方法以及光模块注意事项有哪些&#xff1f;接下来我们就跟随飞畅科技的小编一起来详细了解下吧&#xff01; 光模块常见故障 1、光模块端口被污染&#xff0c;会造成光模块无法正常使用。光模块端口有异物堵塞&a…

GitHub上的OpenJDK

创建 Skara项目的目的是“……调查JDK源代码的替代SCM和代码审查选项&#xff0c;包括基于Git而不是Mercurial的选项&#xff0c;以及由第三方托管的选项。” OpenJDK skara-dev邮件列表包括Robin Westberg上周发布的帖子&#xff0c;该帖子宣布&#xff1a;“我们在https://gi…

【渝粤教育】国家开放大学2018年秋季 1116t机电控制工程基础 参考试题

试卷代号&#xff1a;1125 医疗保障原理与政策 试题 2019年1月 一、选择题&#xff08;每题3分&#xff0c;共24分&#xff09; 1&#xff0e;目前我国城镇职工的医疗保险模式为( )。&#xff08;单选题&#xff09; A&#xff0e;社会统筹 B&#xff0e;个人账户 C&#xff0e…

E104-BT02蓝牙无线传输模块物联网芯片的智能控制、采集

蓝牙技术是一种常见的无线连接技术&#xff0c;得益于智能手机的普及&#xff0c;蓝牙越来越多的应用于我们的生活之中。蓝牙连接的设备随处可见&#xff0c;它方便、快捷&#xff0c;只要有手机进行简单的配对就可以对相关的设备进行控制&#xff0c;不需要专业的控制设备&…

【渝粤教育】国家开放大学2018年秋季 1162t开放英语4 参考试题

试卷代号&#xff1a;1183 公共政策概论 试题 2019年1月 一、单项选择题&#xff08;每题2分&#xff0c;共10分&#xff09; 1.指出“公共政策”即为“公共”而制定的政策的是学者( )。 A.药师寺泰藏 B.罗伯特达尔 C.米歇尔哈蒙 D.伍德罗威尔逊 2.将公共政策主体划分为官方决策…

怎样辨别光模块的真假?

光模块(optical module)由光电子器件、功能电路和光接口等组成&#xff0c;光电子器件包括发射和接收两部分。简单的说&#xff0c;光模块的作用就是光电转换&#xff0c;发送端把电信号转换成光信号&#xff0c;通过光纤传送后&#xff0c;接收端再把光信号转换成电信号。那么…

简单介绍蓝牙无线模块和手机进行的车数据交互技巧

将模块设置为唤醒模式的从机模块&#xff0c;上电等候。手机下载BLE调试助手&#xff0c;并打开蓝牙打开APP。在设备中找到从机模块&#xff0c;并连接。 连接成功后&#xff0c;选择“Unknown Service”接收数据选择如图按键&#xff0c;即可收到模块发送来的数据发送数据选择…

【渝粤教育】国家开放大学2018年秋季 1303T护理伦理学 参考试题

试卷代号&#xff1a;1312 学前教育原理 试题 2019年1月 一、单项选择题&#xff08;每小题3分&#xff0c;共30分&#xff09; 1.欧美发达国家创制出指称学前教育的新名词是&#xff08; &#xff09;。 A.ECCE B.ECCC C.CCCE D.EECE 2.学前教育的构成要素是学前教育者、学前受…

【渝粤教育】国家开放大学2018年秋季 1349T学前教育科研方法 参考试题

科目编号&#xff1a;1358 座位号 2018-2019学年度第一学期期末考试 民族理论与民族政策 试题 2019年 1月 填空题&#xff08;每空2分&#xff0c;共16分&#xff09; 1.我国现有的五个自治区为&#xff1a;内蒙古自治区、新疆维吾尔族自治区、广西壮族自治区、、。 2.______…

遥控开关,4G远程控制增氧机,智慧农渔更轻松!

疫情淡化后的第一个五一&#xff0c;相必很多朋友都早早的做好了规划&#xff0c;相想祖国的大好河山&#xff0c;准备带着家老小&#xff0c;来一场说走就走的旅行&#xff0c;怀念着金庸笔下舟山桃花镇的桃花岛&#xff0c;还是沈从文笔下的凤凰古城呢&#xff1f;可以去的地…

采用无线网桥做监控有什么优势?无线网桥的组网模式有哪些?

无线网桥顾名思义就是无线网络的桥接&#xff0c;它利用无线传输方式实现在两个或多个网络之间相互连接&#xff0c;无线网桥从通信机制上分为电路型网桥和数据型网桥。无线网桥通常用来应用在无线监控&#xff0c;用于将监控数据由一个地方传输到另一个地方&#xff0c;从而省…

Java中的LinkedList

介绍&#xff1a; LinkedList是由节点组成的线性数据结构。 在单链列表中&#xff0c;每个节点包含数据和引用。 在此&#xff0c;参考部分引用链表中的下一个节点。 另一方面&#xff0c;在双链表中&#xff0c;我们具有指向上一个和下一个节点的数据和引用。 Java提供了Link…

【渝粤教育】国家开放大学2018年秋季 2045T金融企业会计 参考试题

试卷代号&#xff1a;2083 信息技术与教育技术(2) 试题&#xff08;开卷&#xff09; 2019年1月 一、单选题&#xff08;每小题4分&#xff0c;共6小题&#xff0c;24分&#xff09; 1&#xff0e;以下关于系统科学的原理描述不正确的一项是( )。 A.反馈原理&#xff0c;是指…

云智能遥控开关设备再物联网领域的应用:智能养殖高效、生态、安全!

随着我国水土流失日益严重&#xff0c;土地资源严重紧缺&#xff0c;水产养殖池塘已经成为一种趋势&#xff0c;但由于现代气候突变现象日益发生&#xff0c;效益下降等问题突出&#xff0c;如何提高养殖产品品质&#xff0c;直接增加了渔民的经济收入&#xff0c;实现高效、生…

【渝粤教育】国家开放大学2018年秋季 2130T药物治疗学 参考试题

试卷代号&#xff1a;2180 办公室管理 试题 2019年1月 一、单项选择题&#xff08;请将正确答案的字母序号填在括号内&#xff0c;每小题2分&#xff0c;共10分&#xff09; 1&#xff0e;办公室工作的本质属性是( ) A&#xff0e;事务性 B&#xff0e;综合性 C&#xff0e;服…

串口光猫设备结构及主要特点介绍

串口光猫是RS-232/422/485串口数据通过光纤媒质传输数据的通信产品&#xff0c;它采用金属外壳&#xff0c;支持工业导轨式安装、壁挂式安装等多种安装方式&#xff0c;同时提供RS-232/422/485接口。那么&#xff0c;串口光猫的设备结构及主要特点有哪些呢&#xff1f;接下来我…