博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java基础---四种引用类型:强弱虚软
阅读量:6953 次
发布时间:2019-06-27

本文共 691 字,大约阅读时间需要 2 分钟。

---强引用:不会被垃圾回收,宁肯抛出outofMemoryError错误也不会回收
---软引用SoftReference:内存不足的时候会被优先回收,回收之后还是内存不足才会抛出outofmemory异常。适合用于缓存对象。
---弱引用WeakReference:一个对象如果只有弱引用,那么就会被垃圾回收。常常用于hash表中,因为hash表允许存储java对象的引用,如果用强引用的话只要hash表存在,那么键值对象就不会回收。如果某个hash表生命周期很长,键值又多会很消耗内存。
例如:Thread类中用ThreadLocalMap来保存局部变量,内部维护一个hash表Entry数组保存键值对(threadlocal,局部变量)其中threadLocal使用弱引用来进行包装,因为ThreadlocalMap的生命周期和Thread的生命周期一样长,当一个THreadlocal没有外部强引用的时候,它只有弱引用,这个时候就会被垃圾回收,导致entry的key为空。但是value值不是空的,那么这个entry没法垃圾回收。但是threadlocal在调用set,remove,get方法的时候会清楚掉Threadlocalmap中key为空的value的值,来保障不会内存泄漏。
---虚引用: 虚引用是每次垃圾回收的时候都会被回收,通过虚引用的get方法永远获取到的数据为null,因此也被成为幽灵引用。
虚引用主要用于检测对象是否已经从内存中删除。

转载于:https://www.cnblogs.com/buptyuhanwen/p/9396559.html

你可能感兴趣的文章
工具简述
查看>>
Hbase 集群搭建
查看>>
分布式文件服务器dfs
查看>>
正则表达式
查看>>
关于直播视频格式和浏览器兼容性历史的来龙去脉
查看>>
No-PDO-Models-MySQL数据库层抽象类 - 实现
查看>>
麦当劳数字化转型中获得的6个数据科学经验
查看>>
是的,InfoQ正在招聘技术编辑!跟对的人,一起做喜欢的事!
查看>>
理解BERT Transformer:Attention is not all you need!
查看>>
vue2+vue-cli,dis文件加载出错解决方案
查看>>
立下“去O”Flag的AWS,悄悄修炼了哪些内功?
查看>>
VR已糊?Facebook不服!
查看>>
关于团队建设,穆帅能教我们什么?
查看>>
2018年Github最受欢迎机器学习语言Python稳坐冠军,numpy、scipy是最受欢迎软件包...
查看>>
JS/CSS体积减少了67%,我们是如何做到的?
查看>>
QCon上海2015精彩演讲前瞻:一线互联网公司架构实践
查看>>
红帽企业版Linux成为Linux下的.NET Core的参考平台
查看>>
蚂蚁金服如何把前端性能监控做到极致?
查看>>
2019 SRE 调查报告:事故处理是主要工作,SRE 压力山大
查看>>
深入浅出Tensorflow(五):循环神经网络简介
查看>>