面试:对象引用类型

一、对象引用类型分为哪几类?

1、强引用

  • 普通变量赋值即为强引用,如A a = new A();
  • 通过GC Root的引用链,如果强引用不到该对象,该对象才能被回收

2、软引用

  • 例如:SoftReference a = new SoftReference(new A());
  • 如果仅有软引用该对象时,首次垃圾回收不会回收该对象,如果内存仍不足,再次回收时才会释放对象
  • 软引用自身需要配合引用队列来释放
  • 典型例子是反射数据

3、弱引用

  • 例如:WeakReference a = new WeakReference(new A());
  • 如果仅有弱引用引用该对象时,只要发生垃圾回收,就会释放该对象
  • 弱引用自身需要配合引用队列来释放
  • 典型例子是 ThreadLocalMap 中的Entry对象

4、虚引用

  • 例如:PhantomReference a = new PhantomReference(newA());
  • 必须配合引用队列一起使用,当虚引用引用的对象被回收时,会将虚引用对象入队,由Reference Handler线程释放其关联的外部资源
  • 典型例子是Cleaner释放DirectByteBuffer占用的直接内存

相关推荐

  1. js中原始类型对象引用

    2024-04-27 21:52:04       51 阅读
  2. 数据类型(面向对象)

    2024-04-27 21:52:04       30 阅读
  3. 通过接口引用对象

    2024-04-27 21:52:04       54 阅读
  4. 引用类型详解

    2024-04-27 21:52:04       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-27 21:52:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-27 21:52:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-27 21:52:04       87 阅读
  4. Python语言-面向对象

    2024-04-27 21:52:04       96 阅读

热门阅读

  1. php 获取网页数据

    2024-04-27 21:52:04       32 阅读
  2. Kafka集群和kafka-manager安装

    2024-04-27 21:52:04       37 阅读
  3. 00.Jenkins 基本介绍与安装

    2024-04-27 21:52:04       29 阅读
  4. 深度学习的模型转换(.pt转换为.engine)

    2024-04-27 21:52:04       38 阅读
  5. npm i时一直卡在sill idealTree buildDeps

    2024-04-27 21:52:04       26 阅读
  6. [leetcode] K 和数对的最大数目

    2024-04-27 21:52:04       33 阅读
  7. node NPM镜像源查看和切换

    2024-04-27 21:52:04       33 阅读
  8. redis常见使用场景

    2024-04-27 21:52:04       28 阅读
  9. OpenInventor/Coin3D 学习指南

    2024-04-27 21:52:04       31 阅读