首页 > 编程语言 >java 引用类型

java 引用类型

时间:2023-04-14 14:13:16浏览次数:42  
标签:obj java 对象 Object GC 引用 类型 new

共分为4种,强弱软徐

强引用

直接使用 new 创建的对象。当触发 GC 时,只要是垃圾就回收

软引用

当触发 GC 时,与是否是垃圾对象无关,意味着不管是不是垃圾对象都不会被回收,只有当内存不足时才回收(内存缓存场景)

Object obj = new Object();
SoftReference<Object> sf = new SoftReference<Object>(obj);
obj = null;  // 使对象只被软引用关联
Object sfObj = sf.get(); // 使用这个对象

弱引用

当触发 GC 就回收,不管是否是垃圾,也不管内存是否够用

Object obj = new Object();
WeakReference<Object> wf = new WeakReference<Object>(obj);
obj = null; // 使对象只被软弱用关联
Object wfObj = wf.get(); // 使用这个对象

虚引用

ReferenceQueue queue = new ReferenceQueue();
// 创建一个对象的虚引用,传入 ReferenceQueue
PhantomReference<byte[]> reference = new PhantomReference<byte[]>(new byte[1], queue);
// 获取到的值是 null!当发生 GC 时,虚引用对象会被回收,这时才能拿到对象(有啥用?)
System.out.println(reference.get());

标签:obj,java,对象,Object,GC,引用,类型,new
From: https://www.cnblogs.com/hangychn/p/17318115.html

相关文章

  • 2.3 Go语言从入门到精通:数据类型
    文章目录1、基本数据类型1.1布尔型1.2数值型1.2.1整型1.2.2浮点型1.2.3复数1.3字符串型2、派生数据类型2.1指针2.2数组2.3结构体2.4通道(channel)2.5切片(slice)2.6函数2.7接口(interface)2.8Map3、其他3.1数据类型转换3.2类型别名4、小结Go语言是一种静态类型的......
  • Java异步同步回调
    同步回调:打印结果:123publicinterfaceResult{voidcallBack();}publicstaticvoidmain(String[]args)throwsInterruptedException{Entityentity=newEntity();entity.task(()->System.out.println("2")......
  • java 如何判断对象是否是垃圾
    引用计数法给对象添加一个引用计数器,当对象增加一个引用时计数器加1,引用失效时计数器减1。引用计数为0的对象就是垃圾可被回收比如a线程中某个栈帧使用某个对象,这个对象的引用计数器+1,调用结束,引用计数器-1这个方法实现简单,效率高,但是并不可取,当循环引用时,引用计数器永......
  • android:keytool生成应用签名证书(java 15)
    一,查看是否已安装keytoolkeytool命令的程序位于jdk的安装目录/bin下,1,查看是否有keytool命令已安装?[lhdop@blog~]$ls/usr/local/soft/jdk-17/bin/keytool/usr/local/soft/jdk-17/bin/keytool2,查看帮助:列出可用的命令[lhdop@blog~]$keytool--helpKeyandCert......
  • 在 Java 中重采样音频
    在我的一个项目中,我需要将PCM音频数据重新采样为不同的采样率。我正在使用javax.sound.sampled.AudioSystem来完成这项任务。重新采样似乎会在帧的开头和结尾添加额外的样本。下面是一个最小的工作示例......
  • Java SpringBoot 中,动态执行 bean 对象中的方法
    根据不同的条件,调用不同的bean对象,执行对象中的方法SpringUtils工具类packagecom.vipsoft.web.utils;importcn.hutool.core.util.ArrayUtil;importorg.springframework.aop.framework.AopContext;importorg.springframework.beans.BeansException;importorg.sprin......
  • MySQL数据库常用概念和数据类型
    前言本系列文章会带各位小伙伴学习数据库技术。数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。本系列教程由浅入深,全面讲解数据库体系,非常适合零基础的小伙伴来学习。全文大约【1466】字,只讲可以让你学到技术、明白原理的纯干货!本文带有丰富案例及配......
  • 原型及原型链-JavaScript教程
    JavaScript是世界上最流行的脚本语言。JavaScript是属于web的语言,它适用于PC、笔记本电脑、平板电脑和移动电话。JavaScript被设计为向HTML页面增加交互性。许多HTML开发者都不是程序员,但是JavaScript却拥有非常简单的语法。几乎每个人都有能力将小的JavaScript......
  • Java基础--数据结构
    数据结构Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类:枚举(Enumeration)、位集合(BitSet)、向量(Vector)、栈(Stack)、字典(Dictionary)、哈希表(Hashtable)、属性(Properties)以上这些类是传统遗留的,在Java2中引入了一种新的框架-集合框架(Collection)Java......
  • Java: Random
     /***版权所有2023涂聚文有限公司*许可信息查看:*描述:*用100元买100只鸡,大公鸡5元一只,母鸡3元1只,小鸡一元3只,问各能买多少只?*历史版本:JDK8.01*2023-03-12创建者geovindu*2023-03-12添加Lambda*2023-03-12修改:date*接口类*2023-03-12修改......