开发者社区> 小弟的谷哥> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

强引用,软引用,弱引用,虚引用

简介: 强引用,软引用,弱引用,虚引用 强引用: 我们一般使用的就是强引用。垃圾回收器绝不会回收它。 当内存空间不足时Java虚拟机宁愿抛出OutOfMemoryError错误使程序异常终止,也不会回收具有强引用的对象来解决内存不足的问题 软引用: 如果一个对象具有软引用,那么当内存空间足够的时候GC就不会回收它,如果内存空间不足了,就会回收这些对象的内存空间。
+关注继续查看


强引用,软引用,弱引用,虚引用



强引用:
我们一般使用的就是强引用。垃圾回收器绝不会回收它。
当内存空间不足时Java虚拟机宁愿抛出OutOfMemoryError错误使程序异常终止,也不会回收具有强引用的对象来解决内存不足的问题


软引用:
如果一个对象具有软引用,那么当内存空间足够的时候GC就不会回收它,如果内存空间不足了,就会回收这些对象的内存空间。


弱引用:

如果一个对象具有弱引用,那么当GC线程扫描的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。

其实准备地说应该是"如果一个对象只具有弱引用.........",即仅有弱引用而不存在对其的强引用才会将其回收.

但由于垃圾回收器是一个优先级很低的线程,因此不一定会很快发现那些只具有弱引用的对象。




为了防止内存溢出,在处理一些占用内存大而且声明周期较长的对象时候,可以尽量应用软引用和弱引用.
但是也请注意在Android较老版本中,常用软引用或弱引用 (SoftReference or WeakReference)实现内存缓存技术。
但从 Android 2.3 (API Level 9)开始,GC会更倾向于回收持有软引用或弱引用的对象,这让软引用和弱引用变得不再可靠。


虚引用:
顾名思义,“虚引用”就是形同虚设,与其他三种引用都不同它并不会决定对象的生命周期。
如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。
虚引用主要用来跟踪对象被垃圾回收器回收的活动。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java中的引用类型(强引用、软引用、弱引用、虚引用)介绍,示例WeakHashMap的使用【享学Java】(中)
Java中的引用类型(强引用、软引用、弱引用、虚引用)介绍,示例WeakHashMap的使用【享学Java】(中)
39 0
Java中的引用类型(强引用、软引用、弱引用、虚引用)介绍,示例WeakHashMap的使用【享学Java】(上)
Java中的引用类型(强引用、软引用、弱引用、虚引用)介绍,示例WeakHashMap的使用【享学Java】(上)
70 0
Java中的引用类型(强引用、软引用、弱引用、虚引用)介绍,示例WeakHashMap的使用【享学Java】(下)
Java中的引用类型(强引用、软引用、弱引用、虚引用)介绍,示例WeakHashMap的使用【享学Java】(下)
44 0
老徐和阿珍的故事:强引用、软引用、弱引用、虚引用,傻傻分不清楚
阿珍:“老徐,你这茶杯了泡的什么?红红的。” 老徐:“这是枸杞呀。” 阿珍:“枸杞?你最近什么干多了,这么虚!” 老徐:“怎么可能?看我这身体,不弱的好吧!” 阿珍一脸坏笑地说:“那就是软了。” 老徐的老脸一红,辩解到:“我这是养养生,我很强的,好吧。” 看着老徐的窘态,阿珍笑出来声。老徐起身刚要走,阿珍一把拽住老徐,说:“跟你开玩笑呢,问你个正事,我一直分不清Java的强引用、软引用、弱引用、虚引用,给我讲讲呗。” 老徐立刻自信满满的坐下,说:“那你可问对人了,我对这方面颇有研究。这四种引用级别由高到低依次是:强引用、软引用、弱引用、虚引用。”
30017 0
软培
机器学习的概念 有 监 督 学 习(Supervised Learning): \[x, y\] 输入高维向量(Vector)并同时输入其标签(Label),通过建模(Modeling),使得机器能够自动在模型中计算最为合适的参数值(Parameter)。
891 0
Java之:强引用、弱引用、软引用、虚引用
转自:https://my.oschina.net/ydsakyclguozi/blog/404389 1、强引用(StrongReference)           强引用是使用最普遍的引用。
818 0
引用类型
引用类型转换:1.向上类型转换(隐式/自动类型转换),是小类型到大类型的转换。如:Dog dog=new Dog();Animal animal=dog;//正确,自动类型提升,向上类型转换2.向下类型转换(强制类型转换),是大类型到小类型的转换(存在风险,溢出)如:Dog dog1=(Dog)animal;//向下类型转换3.instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题。
517 0
如何监控索引的使用?
如何监控索引的使用?     研究发现,oracle数据库使用的索引不会超过总数的25%,或者不易他们期望被使用的方式使用。通过监控数据库索引的使用,释放那些未被使用的索引,从而节省维护索引的开销,优化性能。
770 0
+关注
小弟的谷哥
welcome
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载