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

年月日发(作者:设置约束)面向对象和面向过程的程序设计语言面向对象和面向过程是两种不同的程序设计语言范式。面向过程的程序设计语言是一种基于过程的编程范式,它将程序看作是一系列的指令集合,这些指令按照一定的顺序执行,以完成特定的任务。而面向对

C#程序设计语言复习题(试题及答案版)

2025-1-3

年月日发(作者:表格函数)一.填空题.#源程序的后缀名为______.________。.#中每个类型的变量占用_______个字节的内存。.#的每行语句以________分号_______结尾。.布尔型的变量可以赋值为关键字_______

引用feignClient对象项目启动异常-Consider defining a bean of type ‘com.xxx.service.xxxRemote‘ in your configura

2025-1-31

项目中依赖其他项目提供的feign接口,服务无法启动。控制台打印相关信息。 Field channelApiInfoRemote in com.xxx.xxx.service.impl.xxxImpl require

解决mybatis-plus修改对象属性为null失效,以及updateStrategy = FieldStrategy.IGNORED的坑

7月前

首先场景是数据持久层使用的mybatis-plus,只需要修改对象的几个字段且字段都需要进行判断是否需要赋值为null,然后进行修改使用的是updateById(),结果发现

CAD制图初学入门:CAD对象选择命令的使用技巧

7月前

有些刚开始进行CAD制图初学入门学习的小伙伴在使用国产CAD制图软件绘制建筑图纸的过程中,不知道如何使用浩辰CAD建筑软件中CAD对象选择命令,接下来就让小编来给大家介绍一下国产CAD制图软件——

python中创建对象时会自动调用该类的什么_创建类的对象时,系统会自动调用构造方法进行初始化。 (4.0分)_学小易找答案...

7月前

【判断题】在西餐中肉属于副菜【简答题】How do you think about students money invested in college education?【单选题】构造方法是类的一个特殊方法,Python中它的名称为()

解决系统兼容性中FormData对象包含appendData和realFormData属性

7月前

项目场景:移动端vue项目前端通过axios发送post请求传输FormData数据上传文件到后台问题描述发现pc和安卓系统正常使用new FormData()对象,但是IOS系统则产生的对象

mysql对象浏览器在哪_PLSQL Developer的使用之对象浏览器

7月前

PLSQL Developer的使用之对象浏览器(转自https:wwwblogsmq0036p6437834.html#point11)能够显示与 PLSQL 开发相关的所有信息。可用它来获取对象描述,查

Adobe illustrator 多个对象进行环形布局 - 连载22

6月前

22. 多个对象进行圆形布局。在线绘图平台ImageGP发表于iMeta杂志时有一张环形图列出了ImageGP的主要功能。下面我们看下如何把对象快速部署成这样一个布局。我们首先绘制1个圆形,大小为64mm&#x

NET-SNMP学习 Table对象 (表格代码框架iterate)

6月前

SNMP Table是对象的有序集合,包含若干行。为什么SNMP中需要用表格呢,原因是有些数据的组织用表格来表达更方便,多个对象的组合才能完整描述一条信息。表格代码框架概述

Openlayers 教程 04 - 图形要素对象 Feature 的移动和编辑

4月前

Openlayers 教程 - 图形要素对象 Feature 的移动和编辑 Openlayers 图形要素 Feature 移动和编辑 在线示例 Openlayers 开发中经常会遇到需要操作图形要素 Feature,本示例介绍单体要素 F

Windows部署MinIO,搭建本地对象存储服务

4月前

一、前言 二、MinIO介绍 三、Windows部署MinIO服务 1、准备工作 2、下载MinIO服务 3、启动MinIO服务 4、设置用户名密码 5、创建.bat文件启动服务四、MinIO基本操作 1、存储桶管理

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

3月前

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

jsp的application对象

3月前

1 什么是application对象 ?(1) 当Web服务器启动时,Web服务器会自动创建一个application对象。application对象一旦创建,它将一直存在

浏览器对象模型

2月前

课程名称   前端模块化 课程目标   1.了解常见浏览器 JS 对象常见 API 及用法 https:segmentfaulta1190000014212576  2. 浏览器内置对象详解 3.浏览器事件模型详解 4.

如何通过Android硬件加速优化你的App?详尽教程在这里

1月前

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

DirectDraw入门指南:为你的Adobe Flash Player项目添彩

1月前

本文主要是在网上收集到的一些关于DirectDraw的文章! 一下为相关文章和链接(为什么给了链接还要给文章?因为怕给的链接失效,这样我们就找不到那些好的文章了,在这也谢谢那些提供文章的人!!!) 文章地址:

从代码到效果:DirectDraw在Flash中心的角色解读

1月前

1 概 述 DirectX是Microsoft为软件开发人员提供的一套精心设计的接口,用于开发高性能、实时的应用程序。它以COM(component object modal)为基本结构[1],位于硬件和软件之间,像gdi(gr

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

1月前

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

java 读取模板EXCEL写入数值_excel模板通过编辑标注,java写数据

15天前

自己写了个读取excel模板的写入数据的列子 package copy.user;import java.io.File;import java.io.FileOutputStream;import java.io.IOExc

发表评论

全部评论 0
暂无评论