码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Java 的四种引用方式


    虚引用<弱引用<软引用<强引用

    1、强引用

    例:

    Object obj=new Object();

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


    2、软引用(SoftReference)

    例:

    Object obj = new Object();
    SoftReference<Object> sf = new SoftReference<Object>(obj);
    obj = null;
    sf.get();//获取对象
    如果内存空间不足了,就会回收这些对象的内存。软引用可以和⼀个引用队列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾回收器回收,Java虚拟机就会把这个软引用加⼊到与之关联的引用队列中。


    3、弱引用(WeakReference)

    例:

    Object obj = new Object();
    WeakReference<Object> wf = new WeakReference<Object>(obj);
    wf.get();//获取对象

     弱引⽤与软引用的区别在于:只具有弱引用的对象拥有更短暂的⽣命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,⼀旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。弱引⽤可以和⼀个引用队列(ReferenceQueue)联合使用,如果弱引用所引用的对象被垃圾回收,Java虚拟机就会把这个弱引用加⼊到与之关联的引用队列中。


    4、虚引用(PhantomReference)

    例:

    Object obj = new Object();
    PhantomReference<Object> pf = new PhantomReference<Object>(obj);
    虚引用在任何时候都可能被垃圾回收器回收,主要用来跟踪对象被垃圾回收器回收的活动,被回收时会收到⼀个系统通知。虚引用与软引用和弱引用的⼀个区别在于:虚引用必须和引用队列 (ReferenceQueue)联合使用。当垃圾回收器准备回收⼀个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加⼊到与之关联的引用队列中。

  • 相关阅读:
    3ds max插件CG MAGIC中的室外功能可以高效出图吗?
    C和指针 第13章 高级指针话题 13.2 高级声明
    ST‐LINK V2 使用说明(安装,调试,烧录)
    淘宝天猫API接入说明(淘宝天猫商品详情+关键词搜索商品列表)商品详情数据,商品sku数据,商品优惠券数据
    源代码保密软件分析选型
    算法题:树中根节点到到目标节点的路径java
    Spring Cloud Alibaba微服务第9章之MyBatis-plus
    【Java游戏合集】手把手教你制作游戏
    “华为杯”研究生数学建模竞赛2015年-【华为杯】E题:数控加工刀具运动的优化控制模型研究(附MATLAB代码实现)
    模拟开关的认识与应用
  • 原文地址:https://blog.csdn.net/xiaowang_lj/article/details/125624961
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号