对象引用类型之软引用和弱引用
2019-06-13 09:03:09来源:博客园 阅读 ()
提到弱引用和软引用,想到内存的动态分配与内存回收。在Java语言中,有的区域的内存分配和回收都具备确定性(比如:程序计数器、虚拟机栈和本地方法栈),它们不需要考虑过多的回收问题;而有的区域的内存分配和回收都是动态的(比如,Java堆和方法区、一个接口的多个实现类需要的内存可能不一样)。垃圾收集器对堆进行回收的条件取决于指向该对象的引用类型。
Java中有如下四种类型的引用:
①强引用(Strong Reference)
抛出 OutOfMemoryError也不会回收被强引用关联的对象。
②软引用(SoftReference)
如果一个对象只具有软引用,内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了(在虚拟机抛出 OutOfMemoryError 之前),就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。
软引用对象最常用于实现内存敏感的缓存。
③弱引用(WeakReference)
只具有弱引用的对象拥有更短暂的生命周期。强度比软引用更弱一些,被弱引用关联的对象只能生存到下一次垃圾收集发生之前,一经发现,不管当前内存空间足够与否,都会回收它的内存。
例如:WeakHashMap类,它的key 采用了弱引用的方式,即以弱键实现的基于哈希表的 Map。在WeakHashMap中,当某个键不再正常使用时,将自动移除其条目,因此能够节约存储空间,可用来缓存那些非必须存在的数据。
④虚引用(PhantomReference)
形同虚设。
总之,合理的使用引用才可以给垃圾回收器助力。
原文链接:https://www.cnblogs.com/1693977889zz/p/11012797.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 通过与C++程序对比,彻底搞清楚JAVA的对象拷贝 2020-06-11
- Java笔记:集合 2020-06-10
- Java基础复习——类和对象 2020-06-09
- JSP九大内置对象 2020-06-07
- switch循环所支持的数据类型 2020-06-07
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash