Java四大引用

西魏陶渊明 ... 2021-12-25 Java进阶 大约 2 分钟

作者: 西魏陶渊明 博客: https://blog.springlearn.cn/ (opens new window)

西魏陶渊明

莫笑少年江湖梦,谁不少年梦江湖

# 一、概念

# 1. 强引用

new 对象并指向引用变量的都是强引用,开发中大部分都是强引用。对于强引用,JVM宁愿报错OutOfMemoryError错误,是程序异常终止, 也不会回收强引用来解决内存, 对这类情况,可以通过赋值强引用对象=null,从而被JVM回收。 但是一般我们在方法中定义的强引用,会存在方法栈中,当方法运行完,退出,此时方法中的强引用也会因为引用数为0,从而被回收。

# 2. 软引用

在内存充足情况下,GC不会回收软引用对象,如果内存空间不足了,才会回收这些对象的内存。也正因为这个特性,所以软引用经常用作缓存对象使用。

# 3. 弱引用

任意GC都会清理掉软引用对象,弱引用是最容易记的,任何的GC动作都会将弱引用对象给回收掉。

# 4. 虚引用

和其他三个不一样,这个不对生命周期,有影响,而是当要回收时候,加入到Queue队列中

# 二、在JDK中的体现

引用说明 用途 生存时间 被垃圾回收时间
Object 默认new出来的都是强引用 对象正常状态 JVM停止或者无引用被回收 无任务对象使用
SoftReference 软引用 常用作缓存 当内存不足时候终止 内存不足时候回收
WeakReference 弱引用 常用作缓存 垃圾回收后终止 任何垃圾回收时
PhantomReference 虚引用 用于跟踪对象是否被回收 垃圾回收后终止 任何垃圾回收时

最后求关注,求订阅,谢谢你的阅读!


本文由西魏陶渊明版权所有。如若转载,请注明出处:西魏陶渊明
上次编辑于: 2022年6月16日 21:10
贡献者: lxchinesszz