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个月内不可修改。