java 中都有哪些引用类型

news/2024/11/15 23:23:23/文章来源:https://www.cnblogs.com/89564f/p/18536468
  1. 强引用(Strong Reference)
  • Java中默认声明的就是强引用,例如:​​Object obj = new Object();​
  • 只要强引用存在,垃圾回收器将永远不会回收被引用的对象 ,哪怕内存不足时,JVM也会直接抛出OutOfMemoryError,不会去回收。如果想中断强引用与对象之间的联系,可以显示的将强引用赋值为null。
  • 如果想让对象被回收,可以将对象置为null。
  1. 软引用(SoftReference): 软引用是用来描述一些非必需但仍有用的对象
  • 在内存足够的情况下,软引用不会被回收,只有在内存不足时,系统才会回收软引用对象。
  • 如果回收了软引用对象之后仍然没有足够的内存,才会抛出内存溢出异常。 。这种特性常常被用来实现缓存技术,比如网页缓存,图片缓存等
  • 示例代码:​​byte[] buff = new byte[1024 * 1024]; SoftReference<byte[]> sr = new SoftReference<>(buff);​
  1. 弱引用(WeakReference)
  • 弱引用的引用强度比软引用要更弱一些,无论内存是否足够,只要 JVM 开始进行垃圾回收,那些被弱引用关联的对象都会被回收。
  1. 虚引用(PhantomReference)(幽灵引用/幻影引用)
  • 无法通过虚引用去获取对象。用途:用于gc时返回一个通知。虚引用主要用于跟踪对象的生命周期。 虚引用是最弱的一种引用关系,如果一个对象仅持有虚引用,那么它就和没有任何引用一样,它随时可能会被回收
  1. 引用队列(ReferenceQueue)
  • 引用队列可以与软引用、弱引用、虚引用一起配合使用。
  • 当垃圾回收器准备回收一个对象时,如果发现它还有引用,就会在回收对象之前,把这个引用加入到引用队列中。
  • 程序可以通过判断引用队列中是否加入了引用,来判断被引用的对象是否将要被垃圾回收,这样可以在对象被回收之前采取一些必要的措施。

 

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

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

相关文章

类加载的执行过程

类加载的执行过程是Java虚拟机(JVM)将类文件从磁盘加载到内存,并进行验证、准备、解析和初始化等一系列操作的过程。这个过程可以分为以下几个阶段: 1. 加载根据查找路径找到相应的 class 文件然后导入;2. 验证检查加载的 class 文件的正确性;3. 准备给类中的静态变量分…

请问PbootCMS获取结果页面的搜索keyword值和tag值

问题:PbootCMS如何获取结果页面的搜索关键词和tag值? 答案:搜索关键词keyWord:如果搜索结果页面地址后缀为?keyword=三角形,则获取关键词方式为{$get.keyword} tag关键词:如果搜索结果页面地址后缀为/tag/伪静态配置.HTML,则获取关键词方式为{$get.tag} 其他页面:获取…

PbootCMS模板如何调用当前位置面包屑标签

PbootCMS模板如何调用当前位置面包屑标签标签:{pboot:position}参数说明:separator=*:分隔符,非必填,默认为>>indextext=*:首页文本,非必填,默认为"首页"扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HT…

织梦修改后的网站,织梦CMS内容管理与优化

织梦CMS(DedeCMS)是一款流行的开源内容管理系统,以下是一些内容管理和优化的步骤:登录后台:打开网站的后台管理页面,输入用户名和密码登录。编辑内容:在后台的“内容管理”模块中,找到需要编辑的文章或页面。 点击“编辑”按钮,进行内容修改。发布新内容:在“发布文章…

织梦网站怎么修改自定义,织梦自定义字段管理

在织梦CMS中,自定义字段可以帮助你扩展文章或页面的属性,以下是一些管理自定义字段的步骤:登录后台:打开织梦CMS的后台管理页面,输入用户名和密码登录。进入模型管理:在后台左侧菜单中,点击“核心” > “频道模型” > “管理内容模型”。选择模型:选择需要添加自…

怎么修改企业网站排版,企业网站排版调整指南

调整企业网站的排版可以显著改善用户体验和品牌形象。以下是一些基本步骤:需求分析:确定您希望达到的效果,比如提高转化率、增强品牌形象等。 备份网站:在进行任何重大更改之前,确保备份当前网站的所有文件和数据库,以防万一。 选择合适的工具:如果您使用的是CMS,大多数…

CF1945题解

CF1945A 贪心简单题 先把b自己内部组合,再考虑与c组合 CF1945B 简单题数学题 因为在0m的时间内一定能覆盖所有的情况,所以对0m的时间内最多烟花数进行小学2年纪计算即可 CF1945C 简单题 枚举每一个断点,记录答案即可 CF1945D 挺好玩的一道贪心题。 转化一下式子,我们发现 \…

Python中实现微信支付

目录一,准备环境1,要有微信公众号,商户平台账号2,支持的支付方式有 3,备案域名 一,扫码支付如图1所示,使用模式一生成支付二维码 2,使用模式二生成支付二维码二,使用JSAPI发起微信支付 回到顶部 一,准备环境#1,要有微信公众号,商户平台账号# https://pay.weixin.…

Docker版的应用不要连127.0.0.1

昨晚一直在配置docker 版的nacos,使用如下命令,然后一直启动不成功 docker run -d --env MODE=standalone --name nacos --restart=always -e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_DATABASE_NUM=1 -e MYSQL_SERVICE_HOST=127.0.0.1 -e MYSQL_SERVICE_PORT=3306 -e MYS…

macOS 如何优雅地配置Java开发环境.md

一、准备 确保 HomeBrew 存在 以下命令即可安装 HomeBrew export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.ustc.edu.cn/brew.git" export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.ustc.edu.cn/homebrew-core.git" export HOMEBREW_API_DOMAIN=&quo…

焕然一新!TinyVue 组件库 UI 大升级,更符合现代的审美!

你好,我是 Kagol,个人公众号:前端开源星球。 自从 TinyVue 组件库去年开源以来,一直有小伙伴反馈我们的 UI 不够美观,风格陈旧,不太满足现阶段审美。“TinyVue 给我的感觉就是一个没啥审美能力、但是很努力的老程序员开发的”看到这个评价,我是哭笑不得,一方面对小伙伴…

IDEA2023应用第一部分 环境配置(摘自CSDN 作者:生活需要淡定)

第一部分 环境配置 1.1 语言设置 1.打开IntelliJ IDEA,‌进入菜单栏的File -> Settings。‌ 2.在弹出的设置窗口中,‌点击Plugins,‌然后在搜索框输入Chinese。‌ 3.找到Chinese (Simplified) Language插件,‌点击Install进行安装。‌ 4.安装完成后,‌重启IntelliJ IDE…