Java中对象的引用(Java对象的引用 )

2023-10-28

Java对象的引用

一、概念,什么是Java对象的引用?
  每种编程语言都有自己的数据处理方式。有些时候,程序员必须注意将要处理的数据是什么类型。你是直接操纵元素,还是用某种基于特殊语法的间接表示(例如C/C++里的指针)来操作对象。所有这些在 Java 里都得到了简化,一切都被视为对象。因此,我们可采用一种统一的语法。尽管将一切都“看作”对象,但操纵的标识符实际是指向一个对象的“引用”(reference)。 对Java对象的引用,是描述的定义。 
  
二、Java对象引用的目的
Java中提供这四种引用类型主要有两个目的:
第一是 可以让程序员通过代码的方式决定某些对象的生命周期
第二是 有利于JVM进行垃圾回收

三、四中Java对象的引用
Java对象的引用包括:强引用,软引用,弱引用,虚引用
强引用:是指创建一个对象并把这个对象赋给一个引用变量。
软引用:如果一个对象具有软引用,内存空间足够,垃圾回收器就不会回收它;
如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被 程序使用。软引用可用来实现内存敏感的高速缓存,比如网页缓存、图片缓存等。使用软引用能防止内存泄露,增强程序的健壮性。
SoftReference的特点是它的一个实例保存对一个Java对象的软引用, 该软引用的存在不妨碍垃圾收集线程对该Java对象的回收。
弱引用:WeakReference弱引用也是用来描述非必需对象的,当JVM进行垃圾回收时,无论内存是否充足,都会回收被弱引用关联的对象。在java中,用java.lang.ref.WeakReference类来表示。
虚引用:虚引用(PhantomReference) 虚引用和前面的软引用、弱引用不同,它并不影响对象的生命周期。在java中用java.lang.ref.PhantomReference类表示。如果一个对象与虚引用关联,则跟没有引用与之关联一样,在任何时候都可能被垃圾回收器回收 。

要注意的是,虚引用必须和引用队列关联使用,当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会把这个虚引用加入到与之 关联的引用队列中。程序可以通过判断引用队列中是否已经加入了虚引用,来了解被引用的对象是否将要被垃圾回收。如果程序发现某个虚引用已经被加入到引用队列,那么就可以在所引用的对象的内存被回收之前采取必要的行动。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中对象的引用(Java对象的引用 ) 的相关文章

随机推荐

  • 保姆级使用PyTorch训练与评估自己的MobileViT网络教程

    文章目录 前言 0 环境搭建 快速开始 1 数据集制作 1 1 标签文件制作 1 2 数据集划分 1 3 数据集信息文件制作 2 修改参数文件 3 训练 4 评估 5 其他教程 前言 项目地址 https github com Fafa D
  • angular引入ng-zorro的方法

    安装ng zorro组件 npm install ng zorro antd save 导入模块 import NgZorroAntdModule from ng zorro antd imports BrowserModule NgZor
  • 【2023】华为OD机试真题Java-题目0210-优秀学员统计

    优秀学员统计 题目描述 公司某部门软件教导团正在组织新员工每日打卡学习活动 他们开展这项学习活动已经一个月了 所以想统计下这个月优秀的打卡员工 每个员工会对应一个id 每天的打卡记录记录当天打卡员工的id集合 一共30天 请你实现代码帮助统
  • ajax 筛选表格内容,基于jquery实现表格内容筛选功能实例解析

    当表格内的数据较多时 我们无法一页一页的查找 这时可以通过一个搜索框来实现搜索 对于这个搜素框 我们为了更好的体验可以利用keyup事件实现在用户输入的时候就开始筛选 而不是填完以后点击搜索按钮再执行 效果图 实现代码 function t
  • HNU-电路与电子学-学习笔记(12~24讲)

    放一下12讲 24讲的笔记吧 其它部分的笔记不全 就不放了 每一讲都是我在结合了课本内容 上课PPT 上课笔记后自己总结的知识点 电路与电子学算是我学得最认真的一门课了 最后也取得了还算满意的成绩 希望能够帮助到有需要的同学
  • Vue项目中你是如何解决跨域的呢?

    一 跨域是什么 跨域本质是浏览器基于同源策略的一种安全手段 同源策略 Sameoriginpolicy 是一种约定 它是浏览器最核心也最基本的安全功能 所谓同源 即指在同一个域 具有以下三个相同点 协议相同 protocol 主机相同 ho
  • 工具篇——Base64FileUtil(将文件转成base64 字符串)

    写代码的四点 1 明确需求 要做什么 2 分析思路 要怎么做 1 2 3 3 确定步骤 每一个思路要用到哪些语句 方法和对象 4 代码实现 用具体的语言代码将思路实现出来 学习新技术的四点 1 该技术是什么 2 该技术有什么特点 使用需注意
  • MySQL四十五讲(基础篇)知识汇总(全)

    MySQL四十五讲 基础篇 知识汇总 全 一 MySQL 基本架构 二 日志 Redo log 和 Binlog 2 1 重要的日志模块 gt Redo log 2 2 重要的日志模块 Binlog 2 3 Redo log 与 Binlo
  • 多态&单例类

    1 多态 多态 一种事物的多种体现形式 举例 动物有很多种 应用 定义时并不确定是什么类型 要调用的是哪个方法 只有运行的时候才能确定调用的是哪个 注意 继承是多态的前提 1 多态 1 1 回顾isinstance class Dog ob
  • 使用jquery做的伸缩菜单

  • 基于wordpress和Sakura主题插件搭建博客网站

    基于wordpress和Sakura主题插件搭建博客网站 1 引言 2 认清现实 3 使用的本地化方法 4 分享自己走的一些弯路 5 硬刚404的余波 6 额外的收获 1 引言 最近 本着试试的想法 想着找一个前端方面的工作 遇到一些招聘软
  • fiddler扩展模拟弱网络环境设置

    今天在qq群中有人问到怎么模拟app弱网络环境 我查了下资料 记得之前做测试的时候是设置fiddler断点 app请求后止于fiddler断点 app一直拿不到响应结果就应该要给出网络请求失败的提示 这种方式太麻烦 对每个接口每次请求都要独
  • 图形学实验六真实感图形算法

    目录 实验六 真实感图形算法 一 实验目的 二 实验内容 三 实验原理 四 实验示范代码 略 五 实验步骤 六 实验结果处理 七 实验注意事项 八 预习与思考题 九 实验报告要求 实验六 真实感图形算法 实验类型 设计型 实验学时 2实验要
  • 解决无法成功完成操作,因为文件包含病毒或潜在的垃圾软件

    解决无法成功完成操作 因为文件包含病毒或潜在的垃圾软件 近日在运行电脑上某一个软件的时候 提示 无法成功完成操作 因为文件包含病毒或潜在的垃圾软件 在网上搜索了半天 百度结果翻了几页 都是说把Windows安全中心的 实时保护 关了 然后把
  • MFC 基础知识:主对话框与子对话框(二)

    仅供使用VS MFC初学者学习 高手莫见笑 接 MFC 基础知识 主对话框与子对话框 一 的内容 在 MFC 基础知识 主对话框与子对话框 一 中Edit Control 编辑框 控件中输出内容 主要是想讲讲在创建的子对话框中如何实现一些操
  • BFS算法解题套路框架(附习题)

    BFS算法解题套路框架 BFS 的核心思想 就是把一些问题抽象成图 从一个点开始 向四周开始扩散 一般来说 我们写 BFS 算法都是用 队列 这种数据结构 每次将一个节点周围的所有节点加入队列 BFS 相对 DFS 的最主要的区别是 BFS
  • 20190711_New_Citation

    Cross Talk Among Reactive Oxygen Nitrogen and Sulfur During Abiotic Stress in Plants https onlinelibrary wiley com doi p
  • Awesome Fine-Grained Image Analysis – Papers, Codes and Datasets

    Awesome Fine Grained Image Analysis Papers Codes and Datasets Table of contents Introduction Tutorials Survey papers Ben
  • LDA(Latent Dirichlet Allocation)主题模型

    LDA于2003年由 David Blei Andrew Ng和 Michael I Jordan提出 因为模型的简单和有效 掀起了主题模型研究的波浪 虽然说LDA模型简单 但是它的数学推导却不是那么平易近人 一般初学者会深陷数学细节推导中
  • Java中对象的引用(Java对象的引用 )

    Java对象的引用 一 概念 什么是Java对象的引用 每种编程语言都有自己的数据处理方式 有些时候 程序员必须注意将要处理的数据是什么类型 你是直接操纵元素 还是用某种基于特殊语法的间接表示 例如C C 里的指针 来操作对象 所有这些在