Java引用类型

1 强引用

当我们使用new创建对象时,被创建的对象就是强引用。只要有强引用,GC 永远不会回收掉该对象。

  Map map = new HashMap();

2 软引用

如果一个对象只具备软引用,如果内存空间足够,那么JVM就不会GC它,如果内存空间不足了,就会GC该对象。

软引用需要借助SoftReference类完成。

Java引用类型

3 弱引用

如果一个对象只具有弱引用,只要JVM的GC线程检测到了,就会立即回收。弱引用的生命周期要比软引用短很多。

软引用需要借助WeaKReference类完成。

!

Java引用类型

Java引用类型

4 虚引用

虚引用也称为幽灵引用或幻影引用。虚引用的 get 方法永远返回 null,一个对象是否存在虚引用不会对生存时间构成影响。唯一的用处:能在对象被 GC 时能够得知。JAVA 中用 PhantomReference 来实现虚引用。PhantomReference 使用时,必须要关联一个 ReferenceQueue 对象。当一个对象被 GC 的时候,如果该对象有虚引用,那么就会把对象放入 ReferenceQueue 里。通过检查 ReferenceQueue 队列中的对象来判等对象是否即将被回收,可以记录一些日志之类的信息。

Java引用类型

查考文章

Original: https://www.cnblogs.com/iforeverhz/p/16257076.html
Author: iforeverhz
Title: Java引用类型

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/583224/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Mybatis的递归查询实现二级评论

    最近闲来无事,在做毕业设计。前台页面需要一个评论功能,感觉三方的评论太复杂,功能也太多。就想着自己写一个简单点的,本人比较菜,方法比较笨,可能效率不高。 环境介绍 后端:Sprin…

    Linux 2023年6月8日
    0105
  • 写给初学者的Linux errno 错误码机制

    不同于Java的异常处理机制, 当你使用C更多的接触到是基于错误码的异常机制, 简单来说就是当调用的函数发生异常时, 程序不会跳转到一个统一处理异常的地方, 取而代之的是返回一个整…

    Linux 2023年5月27日
    083
  • 019 Linux tcpdump 抓包案例入门可真简单啊?

    1 tcpdump 是什么? 2 tcpdump 常用命令参数 3 tcpdump 抓包wss,配合Wireshark分析 4 tcpdump 抓包白度,配合Wireshark分析…

    Linux 2023年5月27日
    083
  • 大数据之Hadoop集群的HDFS压力测试

    测试HDFS写性能 原文:sw-code1)写测试的原理 2)测试内容:向HDFS集群写10个128MB的文件(3个机器每个4核,2 * 4 = 8 < 10 < 3 …

    Linux 2023年6月8日
    090
  • 原码反码补码

    3.1 知识点补充 在计算机内部,所有信息都是用二进制数串的形式表示的。整数通常都有正负之分,计算机中的整数分为无符号的和带符号的。无符号的整数用来表示0和正整数,即自然数;带符号…

    Linux 2023年6月13日
    0107
  • 第二周作业

    第二周作业 一、显示在/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或者目录 [root@CentOS8 / ]#!mkdir mkdir /etc/…

    Linux 2023年6月13日
    094
  • Linux—磁盘管理

    Linux 磁盘管理 磁盘是一种计算机的外部存储器设备,由一个或多个覆盖有磁性材料的铝制或玻璃制的碟片组成,用来存储用户的信息,这种信息可以反复地被读取和改写;绝大多数磁盘被永久封…

    Linux 2023年6月7日
    0109
  • 【Example】C++ 接口概念讲解及例子演示

    C++ 和 Java 不同的是,C++ 没有 interface 关键字。对于很多新手来说,C++ 当中接口的概念不容易像 Java 当中那样被理解。 然而接口是面向对象编程当中的…

    Linux 2023年6月13日
    094
  • Color 16 Base Code 颜色代码大全

    颜色预览表,请参考以下图片。 十六进制颜色编码字符串如下所示(前置的英语单词都是颜色) ‘aliceblue’: ‘#F0F8FF’…

    Linux 2023年6月7日
    0124
  • linux下利用inode删除文件

    由于 linux下中文编码和在Windows中的中文编码可能不同,在一定的条件下,linux的文件夹可能会存在乱码的情况就算一些乱七八糟的字符。如问号的文件名,这样的文件使用rm …

    Linux 2023年6月6日
    0106
  • CMU15-445 数据库导论 Storage02 其他存储方式

    CMU15-445 数据库导论 Storage02 其他存储方式 1. 参考资料: [1] CMU15-445:Database Systems [Andy Pavlo] http…

    Linux 2023年6月6日
    0113
  • MySQL — 数据控制语言

    DCL 全称 Data Control Language。数据控制语言,用来创建数据库用户、控制数据库的访问权限。 1、用户管理 select * from user; 只能在指定…

    Linux 2023年6月8日
    098
  • 程序员要知道的22个学习网站

    点击标题即可直达链接网址 GitHub是一个面向开源及私有软件项目的托管以及在线软件开发平台,用于存储、跟踪和协作软件项目,开发者能够上传自己的代码文件,并与其他开发者在开源项目上…

    Linux 2023年6月6日
    095
  • 解决pip下载慢

    临时使用 可以在使用pip的时候加参数 -i https://pypi.tuna.tsinghua.edu.cn/simple 设为默认 pip install pip -U -i…

    Linux 2023年6月13日
    090
  • Kubenertes-实战入门

    实战入门 Namespace Namespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现 多套环境的资源隔离。 默认情况下,kubernetes集群中…

    Linux 2023年6月13日
    093
  • MyCAT实现MySQL读写分离

    用户连接到MySQL的中间件(代理),中间件接收用户的访问转发给后端的mysql数据库。 是MySQL的一个中间件软件,Mycat是一个开源的分布式数据库系统,是一个实现了MySQ…

    Linux 2023年6月7日
    088
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球