admin 管理员组

文章数量: 1184232


2024年3月9日发(作者:四川成都网站网页设计)

在Java中,"reference"是用来指向对象的变量。它并不用来存储

对象本身,而是存储一个指向对象的指针。Java中的引用可以分为四

种类型:强引用,软引用,弱引用和虚引用。

1. **强引用(Strong Reference):** 这是默认类型的引用。当

你创建一个对象并将其赋值给某个引用时,该引用就是一个强引用。

只要强引用存在,垃圾收集器就永远不会回收被引用的对象。即使系

统内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使

程序异常终止,也不会靠随意回收具有强引用的“存活”对象来解决

内存不足问题。

例如:

```java

Object obj = new Object(); // obj是一个强引用

```

2. **软引用(Soft Reference):** 这是一种稍微弱化一些的引

用,需要用ference类来实现。软引用是用来描述

一些可能还有用但并非必需的对象。对于软引用关联着的对象,在系

统将要发生内存溢出异常前,将会把这些对象列进回收范围之中进行

第二次回收。如果这次回收还没有足够的内存,才会抛出内存溢出异

常。

例如:

```java

SoftReference softRef = new SoftReference(new

Object()); // softRef是一个软引用

```

3. **弱引用(Weak Reference):** 弱引用也是用

ference类来实现的。被一个弱引用关联着的对象

只能生存到下一次垃圾收集发生之前。当垃圾收集器工作时,无论当

前系统内存空间足够与否,都会将只被弱引用关联的对象必定回收。

例如:

```java

WeakReference weakRef = new

WeakReference(new Object()); // weakRef是一个弱引用

```

4. **虚引用(Phantom Reference):** 虚引用是最弱的一种引用

关系。一个对象是否有虚引用的存在,完全不会对其生存时间构成影

响,也无法通过虚引用来获取一个对象实例。为一个对象设置虚引用

关联的唯一目的就是能在这个对象被收集器回收时收到一个系统通

知。

例如:

```java

PhantomReference phantomRef = new

PhantomReference(new Object()); // phantomRef是一个虚引用

```

这些引用类型在Java垃圾收集器的工作中扮演着重要角色。了

解它们的工作原理可以帮助我们更好地优化程序的性能和内存使用。


本文标签: 引用 对象 回收

更多相关文章

面向对象程序设计考试模拟题含参考答案

2025-1-2

年月日发(作者:翻译)面向对象程序设计考试模拟题含参考答案一、单选题(共题,每题分,共分)、下列数据结构中,哪一个是类的底层实现()、数组结构、链表结构、哈希表结构、红黑树结构正确答案:答案解析:的底层是数组实现的。、属于以下哪种语言()、

2024年等级考试-计算机二级-Python语言程序设计考试历年真题常考点试题

2025-1-2

年月日发(作者:网页界面设计艺术教程)年等级考试-计算机二级-语言程序设计考试历年真题常考点试题带答案(图片大小可任意调节)第卷一.单选题(共题).以下表达式,正确定义了一个集合数据对象的是:.{,’’,.}.(,’’,.).[,’’,.]

软件设计师考试笔记考点(知识点)归纳总结

2025-1-3

年月日发(作者:部署在哪个目录)、软件开发模型()原型法--适用于需求不明确的开发()瀑布模型--适用于需求已经明确的开发()螺旋模型--适用于风险较大的大中型项目()喷泉模型--主要用于描述面向对象的开发过程、成本估算时,方法以规模作为成

网络连接计算机对象如何删除吗,怎么删除电脑wifi记录

2025-2-1

如何删除笔记本电脑中保存的wifi热点,怎么删除电脑wifi记录?XP、Win7、Win8、Win10电脑中,删除wifi热点记录的操作方法都不一样;下

【MyBatis】Mybatis的java对象名和数据库表名不同怎么办?

2025-2-21

java对象名 和 数据库表名 不同怎么办? 提问: 我想请教一下,在使用mybatis的注解的时候,如果出现java对象名和数据库表名不同的时候,如

电脑无法打开计算机的策略对象,windows7系统提示“无法打开此计算机上的组策略对象”的修复教程...

2025-3-1

我们在操作windows7系统电脑的时候,常常会遇到windows7系统提示“无法打开此计算机上的组策略对象”的问题。那么出现windows7系统提示“无法打开此计算机上的组策略对象”的问题该怎么解决呢?很多对电脑不太

电脑重装系统提示activex部件不能创建对象如何解决

2025-3-19

部分用户在电脑打开某些软件时,可能会遇到过activex部件不能创建对象的情况,这种情况可能是软件在运行时确实组件导致的,这类就和大家分享一个解决方法吧。 详细教程可在小白

解决win7电脑无法打开此计算机组策略对象的问题

11月前

我们在工作中,经常会用到win7电脑的组策略对象,进行一些配置的更改,但有时有些电脑提示打不开此计算机组策略对象,希望下面的方法能帮到各位读者。1、

(翻译)Conversation对象的作用

9月前

原文地址:http:blog.greenl.ee20120222conversation-objects-for 为了让开发者尽情的扩展Lync的功能而无需了解SIP协议的本质,UC

JavaScript高级程序设计 第12章---BOM浏览器对象模型

8月前

第12章 BOM 本章内容: 理解BOM的核心——window 对象 控制窗口及弹窗 通过location 对象获取页面信息 使用navigator 对象了解浏览器 通过history 对象操作浏览器历史 BOM是使用JavaScript

浏览器window对象

8月前

浏览器windows对象介绍(未完待续)序号名称类型或值描述001alertfunction alert()弹出对话框002applicationCacheApplicationCache应用程序

如何在Photoshop2022中使用魔术棒工具轻松编辑背景和其他对象

8月前

对于Photoshop大家并不陌生,PS是强大而全面的图像编辑软件解决方案,附带大量图像处理工具,旨在帮助您轻松地修饰照片。今天小编给大家带来如何在Photoshop2022

Win10 删除隐藏 文件资源管理器 视频、图片、文档、下载、音乐、桌面、3D对象

4月前

使用快捷键WIN + R,打开“运行”对话框,输入“regedit”,并回车,会打开注册表编辑器。地址栏定位到下面的位置,将"ThisPCPolicy"的字符串值改为“Hide”,重新打开我的电脑,即可发现这些文

Adobe illustrator 调整对象大小 - 连载 11

4月前

11. 调整对象的长宽时,注意位置向导。默认是中心不变,如果对象变长了会左右延伸。Y轴的刻度线通常我们希望其右侧不动,如果延长了,则向左延长。首先设置定

Android硬件加速实战指南:让你的应用更流畅

2月前

好文章转载一下:链接: 翻译自google官方文档:。 从Android3.0(API Level 11)开始,Android 2D渲染管道能够更好的支持硬件加速。硬件加速执行的所有的绘图操作都是使用

深入探讨:DirectDraw在Adobe Flash Player中的核心作用

2月前

这部分主要包括 DirectDraw 组成, 操作系统及系统硬件之间联系. 有以下一些主题:结构纵观DirectDraw对象类型硬件操作层(HAL)软件摸拟

从DirectDraw入门到精通:MFC中的视觉魔法

2月前

只要是介绍编程的书,似乎有一个不成文的规定,即第一个例子由“ Hello World”开始,本教程也不例外。那么,如果你早已迫不及待想初尝 DirectDraw程序编译成功后的“

自动化的秘密:使用VS2013进行AutoCAD2016 C#扩展开发技巧

2月前

机械设计中一般都采用AutoCAD设计软件,在复杂 CAD问题或特殊用途的设计中,依据原有软件的功能往往难以解决问题,在此情况下,只是会使用软件的基本功能是不够的。本着自学和相互交流的原则,撰写如下学习心得:永远的Hell

从新手到高手:用Java操作剪贴板的必备技能 - IsDataFlavorAvailable讲解

2月前

原文链接:Java提供两种类型的剪贴板:系统的和本地的. 本地剪贴板只在当前虚拟机中有效.Java允许多个本地剪贴板同时存在,可以方便地通过剪贴板的名称来进行存取访问.系统剪贴板与同等操作系统直接关连,允许应用

从入门到精通:Android 10.0 WiFi静态IP和DNS配置攻略

1月前

想要在代码中实现设置WIFI静态IP需要有系统权限,要在manifest文件添加android:sharedUserId=“android.uid.system”,还要有系统签名。设置WIFI静态IP和之前以太网的类似,都

发表评论

全部评论 0
暂无评论