Java四大引用

举报
西魏陶渊明 发表于 2022/09/25 01:05:33 2022/09/25
【摘要】 作者: 西魏陶渊明 博客: https://blog.springlearn.cn/ 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 一、概念 1. 强引用 new 对象并指向引用变量的...

作者: 西魏陶渊明
博客: https://blog.springlearn.cn/

西魏陶渊明
莫笑少年江湖梦,谁不少年梦江湖

一、概念

1. 强引用

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

2. 软引用

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

3. 弱引用

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

4. 虚引用

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

二、在JDK中的体现

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

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

文章来源: springlearn.blog.csdn.net,作者:西魏陶渊明,版权归原作者所有,如需转载,请联系作者。

原文链接:springlearn.blog.csdn.net/article/details/125830600

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。