首页 > 编程语言 >Java四种引用类型

Java四种引用类型

时间:2022-11-18 15:01:05浏览次数:40  
标签:obj log Object 回收 引用 new Java 四种

强引用

默认的引用,任何对象被赋值即为强引用;
强引用不会被GC回收。

public class StrongReferenceUsage {  
    @Test  
    public void stringReference(){  
        Object obj = new Object();  
    }  
} 

软引用

只有在内存不足时,软引用才会被GC回收。

@Test  
public void softReference(){  
    Object obj = new Object();  
    SoftReference<Object> soft = new SoftReference<>(obj);  
    obj = null;  
    log.info("{}",soft.get());  
    System.gc();  
    log.info("{}",soft.get());  
}  

弱引用

只要进行GC,弱引用就会被回收。

@Test  
public void weakReference() throws InterruptedException {  
    Object obj = new Object();  
    WeakReference<Object> weak = new WeakReference<>(obj);  
    obj = null;  
    log.info("{}",weak.get());  
    System.gc();  
    log.info("{}",weak.get());  
} 

虚引用

虚引用对象没有被任何的效果,进行GC即被回收;
作用仅仅是被回收后放入引用队列,标识该对象已被回收。
例如:加载一张大内存图片,确认被回收后才读取下一张,防止OOM。

标签:obj,log,Object,回收,引用,new,Java,四种
From: https://www.cnblogs.com/ubyte/p/16903243.html

相关文章

  • Java阻塞队列
    ArrayBlockingQueue长度:固定(有界队列);锁类型:存取共用一个ReentrantLock锁,存取互斥;游标:两个index表示头和尾;阻塞条件:两个Condition标识空或者满,每次的存取操作都会唤醒对......
  • Java-14流Stream【创建一个简易for循环工具】
    Java-14流Stream构造简易的循环取代forIntStream类提供了一个range()方法,可以生成一个流————由int值组成的序列importstaticjava.util.stream.IntStream.*;/**......
  • 令人头疼的Javascript隐式&强制转换
    Javascript的隐式强制只是指Javascript试图将意外的值类型强制为预期的类型。因此,您可以在需要数字的地方传递一个字符串,在需要字符串的地方传递一个对象等,它会尝试将其......
  • c#入参使用引用类型为啥要加ref?
    摘一段来自官网的说明:方法的参数列表中使用ref关键字时,它指示参数按引用传递,而非按值传递。ref关键字让形参成为实参的别名,这必须是变量。换而言之,对形参执行的任何......
  • Springboot项目java -jar 启动jar包参数详解
    Windows1、指定端口java-jarspringboot.jar--server.port=81812、指定配置文件java-jarspringboot.jar--spring.profiles.active=dev3、同时指定端口与配置文件ja......
  • Java反射与安全问题
    1.Java反射机制Java反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及......
  • 【java开发系列】—— JDOM创建、修改、删除、读取XML文件
    有很多中操作XML文件的方法,这里介绍一下JDOM的使用方法和技巧。 JDOM下载地址创建XML文档XML文件是一种典型的树形文件,每个文档元素都是一个document元素的子节点。......
  • Java并发中锁的种类
    锁的分类Java中锁分为以下几种:乐观锁、悲观锁共享锁、独享锁公平锁、非公平锁互斥锁、读写锁可重入、不可重入锁synchronized锁升级(无锁->偏向锁->轻量级锁......
  • Java内存马的学习总结
    1.前置知识JavaWeb三大组件ServletServlet是运行在Web服务器或应用服务器上的程序,它是作为来自HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层......
  • SpringMVC 拦截异常Exception返回Json,适合Java做后台业务项目
    publicclassExceptionHandlerimplementsHandlerExceptionResolver{@OverridepublicModelAndViewresolveException(HttpServletRequestreque......