码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • JVM面试题:(四)四种引用方式强弱软虚


    四种引用方式:

    在这里插入图片描述

    强引用

    强引用是平常中使用最多的引用,强引用在程序内存不足(OOM)的时候也不会被回收,使用
    方式:
    String str = new String(“str”);
    System.out.println(str);

    软引用

    软引用在程序内存不足时,会被回收,使用方式:
    // 注意:wrf这个引用也是强引用,它是指向SoftReference这个对象的,
    // 这里的软引用指的是指向new String(“str”)的引用,也就是SoftReference类中T
    SoftReference wrf = new SoftReference(new String(“str”));
    可用场景: 创建缓存的时候,创建的对象放进缓存中,当内存不足时,JVM就会回收早先创建
    的对象。

    弱引用

    弱引用就是只要JVM垃圾回收器发现了它,就会将之回收,使用方式:
    WeakReference wrf = new WeakReference(str);
    可用场景: Java源码中的 java.util.WeakHashMap 中的 key 就是使用弱引用,我的理解就是,
    一旦我不需要某个引用,JVM会自动帮我处理它,这样我就不需要做其它操作。

    虚引用

    虚引用的回收机制跟弱引用差不多,但是它被回收之前,会被放入 ReferenceQueue 中。注意
    哦,其它引用是被JVM回收后才被传入 ReferenceQueue 中的。由于这个机制,所以虚引用大多
    被用于引用销毁前的处理工作。还有就是,虚引用创建的时候,必须带有 ReferenceQueue ,
    使用例子:
    WeakReference wrf = new WeakReference(str);
    PhantomReference prf = new PhantomReference(new String(“str”),
    new ReferenceQueue<>());
    可用场景: 对象销毁前的一些操作,比如说资源释放等。 Object.finalize() 虽然也可以做这
    类动作,但是这个方式即不安全又低效
    上诉所说的几类引用,都是指对象本身的引用,而不是指Reference的四个子类的引用
    (SoftReference等)。

  • 相关阅读:
    成立十周年,亚马逊云科技合作伙伴网络是如何吸引12万家伙伴的?
    基于JAVA视频点播系统设计与实现 开题报告
    干掉 “重复代码”,这三种方式绝了!
    Linux 加密安全和私有CA的搭建方法
    Web前端系列技术之Web APIs基础(从基础开始)④
    集成电路模拟版图入门——转行版图基础学习笔记(一)
    如何使用pandas的join来比对两个dataframe的重合度,交集
    来看看这个JS题输出什么?教你通过断电调试一步步看原因
    H5 微信扫一扫
    Retinanet网络结构详解
  • 原文地址:https://blog.csdn.net/weixin_42774617/article/details/133799191
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    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号