Java中的强引用,软引用,弱引用
JAVA 引用
2023-09-27 14:25:24 时间
作者:winterSunshine
链接:https://www.zhihu.com/question/37401125/answer/100981172
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
链接:https://www.zhihu.com/question/37401125/answer/100981172
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
1.概念解释
- 强引用是使用最普遍的引用:Object o=new Object(); 特点:不会被GC
- 将对象的引用显示地置为null:o=null; // 帮助垃圾收集器回收此对象
- 举例ArrayList的实现源代码:
- 软引用用来描述一些还有用但是并非必须的对象,在Java中用java.lang.ref.SoftReference类来表示。对于软引用关联着的对象,只有在内存不足的时候JVM才会回收该对象。因此,这一点可以很好地用来解决OOM的问题,并且这个特性很适合用来实现缓存:比如网页缓存、图片缓存等。
- 浏览器网页缓存实例:
- 软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾回收器回收,Java虚拟机就会把这个软引用加入到与之关联的引用队列中。
- 浏览器网页缓存实例:
- 弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个优先级很低的线程,因此不一定会很快发现那些只具有弱引用的对象。
- 实例:
- 虚引用也称为幻影引用:一个对象是都有虚引用的存在都不会对生存时间都构成影响,也无法通过虚引用来获取对一个对象的真实引用。唯一的用处:能在对象被GC时收到系统通知,JAVA中用PhantomReference来实现虚引用。
相关文章
- Java程序员修炼之道
- 一文读懂java中的Reference和引用类型
- Java中的强软弱虚引用《对Java的分析总结三》
- Java实现内存分配算法 FF(首次适应算法) BF(最佳适应算法)
- Java 参数传递到底是按 值传递 还是 引用传递 ?
- 记录Java的垃圾回收机制和几种引用
- Java中的弱引用
- 《Java EE 7精粹》—— 3.11 资源库契约
- 【Java实习生】每日10道面试题打卡!
- java基础day11---空指针异常----引用类型--自定义类型赋值--封装
- Java学习-073-多线程06:线程中断 interrupt()
- java 读写分离
- 基于SMB协议的共享文件读写 博客分类: Java
- java安全编码指南之:Thread API调用规则
- Java虚拟机(五)Java的四种引用级别
- Java内存区域与内存溢出
- Java学习笔记之深入理解引用
- Java中的软引用,弱引用和虚引用
- Java 强引用、 软引用、 弱引用、虚引用
- 一个Web Project引用多个Java Project在Eclipse下的配置--转载
- 关于java的参数传递(值传递、引用传递和传值、传引用等)
- Java:jdk的安装以及hello world
- JAVA编写的预警系统
- Java 8 的新特性和Java 的4种引用方式
- 【Java I/O 流】文件字节输入输出流:FileInputStream & FileOutputStream(文件读写案例)