我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java中四种引用有什么区别?

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java中四种引用有什么区别?

Java中四种引用有什么区别?

Java中存在四种引用,它们分别为:强引用,软引用,弱引用,虚引用。这四种引用强度依次逐渐减弱。【推荐学习:java课程】

强引用(StrongReference)

强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。

软引用(SoftReference)

如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。

软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾回收器回收,Java虚拟机就会把这个软引用加入到与之关联的引用队列中。

弱引用(WeakReference)

弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个优先级很低的线程,因此不一定会很快发现那些只具有弱引用的对象。

弱引用可以和一个引用队列(ReferenceQueue)联合使用,如果弱引用所引用的对象被垃圾回收,Java虚拟机就会把这个弱引用加入到与之关联的引用队列中。

虚引用(PhantomReference)

"虚引用"顾名思义,就是形同虚设,与其他几种引用都不同,虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。

虚引用主要用来跟踪对象被垃圾回收器回收的活动。虚引用与软引用和弱引用的一个区别在于:虚引用必须和引用队列 (ReferenceQueue)联合使用。当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之 关联的引用队列中。

Java中提供这四种引用类型主要有两个目的:

  • 可以让程序员通过代码的方式决定某些对象的生命周期;

  • 有利于JVM进行垃圾回收。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java中四种引用有什么区别?

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java中四种引用有什么区别?

Java中四种引用有什么区别?Java中存在四种引用,它们分别为:强引用,软引用,弱引用,虚引用。这四种引用强度依次逐渐减弱。【推荐学习:java课程】强引用(StrongReference)强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会
Java中四种引用有什么区别?
2016-10-20

Java中的四种引用是什么

这篇文章主要讲解了“Java中的四种引用是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中的四种引用是什么”吧!首先,从 JDK1.2 开始,对象的引用被划分为4种级别,从而使
2023-06-16

java中弱引用和软引用有什么区别

java中弱引用和软引用有什么区别?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。常用的java框架有哪些1.SpringMVC,Spring Web MVC是一种基于Java的
2023-06-14

java强引用和弱引用有什么区别

Java的引用分为四种:强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference)。其中,强引用和弱引用的区别如下:生命周期:强引
2023-10-27

Java Rabbitmq中四种集群架构的区别是什么

这篇文章给大家分享的是有关Java Rabbitmq中四种集群架构的区别是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Rabbitmq 四种集群架构1. 主备模式 2. 远程模式3. 镜像模式 4. 多活
2023-06-29

java四种引用类型是什么

Java中有四种引用类型,它们分别是:1. 强引用(Strong Reference):最常见的引用类型,只要一个对象有强引用与之关联,垃圾收集器就不会回收它。2. 软引用(Soft Reference):用来描述一些还有用但非必需的对象。
2023-09-28

Java的四种引用方式是什么

本篇内容主要讲解“Java的四种引用方式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java的四种引用方式是什么”吧!1.强引用(StrongReference)使用最普遍的引用。只要引
2023-06-25

Java常见的四种引用是什么

这篇文章主要讲解了“Java常见的四种引用是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java常见的四种引用是什么”吧!从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序能
2023-06-17

java引发死锁的四种情况分别是什么

这篇文章主要介绍java引发死锁的四种情况分别是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、四种情况(1)交叉锁导致程序死锁:比如线程A持有R1的锁等待R2的锁,线程B持有R2的锁等待R1的锁(2)内存不足
2023-06-15

Python中引用传参的四种方式分别是什么

这篇文章将为大家详细讲解有关Python中引用传参的四种方式分别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。引用传参一:>>> a = 100 #这里的a是不可变类型>>> def
2023-06-22

CSS中的四种定位有哪些区别

本文将为大家详细介绍“CSS中的四种定位有哪些区别”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“CSS中的四种定位有哪些区别”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获新知
2023-06-08

Java中引用类型和原始类型有什么区别

本篇文章给大家分享的是有关Java中引用类型和原始类型有什么区别,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。另
2023-06-17

Python中绝对引用和相对引用有什么区别

这篇文章将为大家详细讲解有关Python中绝对引用和相对引用有什么区别,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python的五大特点是什么python的五大特点:1.简单易学,开发程序
2023-06-14

java的四种访问级别是什么

Java语言中有四种访问级别,分别是公共访问级别(public)、默认访问级别(default、也称为包级别)、受保护访问级别(protected)和私有访问级别(private)。这些访问级别用于控制类、方法、变量和构造方法的可见性和访问
2023-09-27

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录