Java对象引用方式实例分析有哪些具体案例?
- 内容介绍
- 文章标签
- 相关推荐
本文共计934个文字,预计阅读时间需要4分钟。
本文实例讲述了Java对象引用的四种引用方式。分享给广大读者和专家参考,具体如下:
1. 强引用:我们平时一般都是这种引用,当一个对象被强引用时,只要引用对象还存在,垃圾回收器就不会回收该对象。例如:javaObject obj=new Object();
2.软引用:软引用可以用来实现内存敏感缓存。如果一个对象仅被软引用引用,当内存不足时,垃圾回收器会回收该对象。例如:
javaSoftReference softRef=new SoftReference(new Object());3.弱引用:弱引用比软引用具有更低的优先级,如果一个对象仅被弱引用引用,垃圾回收器在下次回收时,会回收该对象。例如:
javaWeakReference weakRef=new WeakReference(new Object());4.虚引用:虚引用是最弱的一种引用关系,一个对象如果被虚引用引用,垃圾回收器会随时回收该对象。虚引用通常与引用队列结合使用,以便在对象被回收时得到通知。例如:
javaPhantomReference phantomRef=new PhantomReference(new Object(), queue);本文实例讲述了Java对象的四种引用方式。分享给大家供大家参考,具体如下:
一 点睛
Java语言对对象的引用有如下四种方式
- 强引用:我们平时一般都是这种引用,当一个对象被一个或一个以上的引用变量所引用时,它处于可达状态,不可能被系统垃圾回收机制回收。
- 软引用:软引用需要通过SoftReference类来实现,当一个对象只具有软引用时,它有可能被垃圾回收机制回收。对于只有软引用的对象而言,当系统内存空间足够时,它不会被系统回收,程序也可以使用该对象,当系统内存空间不够时,系统可能回收它。软引用通常用于对内存敏感的程序中。
- 弱引用:弱引用通过WeakReference类实现,弱引用和软引用很像,但弱引用的引用级别更低。对于只有弱引用的对象而言,当系统垃圾回收机制运行时,不管系统内存是否足够,总会回收该对象所占用的内存。当然,并不是说当一个对象只有弱引用时,它就会被立即回收,而是必须等到系统垃圾回收机制运行时才会被回收。
- 虚引用:虚引用通过PhantomReference类实现,虚应用完全类似于没有引用。虚引用对对象本身没有太大影响,对象甚至感觉不到虚引用的存在。
二 实战——若弱引用所引用对象的垃圾回收过程
1 代码
import java.lang.ref.*; public class ReferenceTest { public static void main( String[] args ) throws Exception { // 创建一个字符串对象 String str = new String("疯狂Java讲义"); // 创建一个弱引用,让此弱引用引用到"疯狂Java讲义"字符串 WeakReference wr = new WeakReference(str); //① // 切断str引用和"疯狂Java讲义"字符串之间的引用 str = null; //② // 取出弱引用所引用的对象 System.out.println(wr.get()); //③ // 强制垃圾回收 System.gc(); System.runFinalization(); // 再次取出弱引用所引用的对象 System.out.println(wr.get()); //④ } }
2 图解
3 运行
疯狂Java讲义
null
更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
本文共计934个文字,预计阅读时间需要4分钟。
本文实例讲述了Java对象引用的四种引用方式。分享给广大读者和专家参考,具体如下:
1. 强引用:我们平时一般都是这种引用,当一个对象被强引用时,只要引用对象还存在,垃圾回收器就不会回收该对象。例如:javaObject obj=new Object();
2.软引用:软引用可以用来实现内存敏感缓存。如果一个对象仅被软引用引用,当内存不足时,垃圾回收器会回收该对象。例如:
javaSoftReference softRef=new SoftReference(new Object());3.弱引用:弱引用比软引用具有更低的优先级,如果一个对象仅被弱引用引用,垃圾回收器在下次回收时,会回收该对象。例如:
javaWeakReference weakRef=new WeakReference(new Object());4.虚引用:虚引用是最弱的一种引用关系,一个对象如果被虚引用引用,垃圾回收器会随时回收该对象。虚引用通常与引用队列结合使用,以便在对象被回收时得到通知。例如:
javaPhantomReference phantomRef=new PhantomReference(new Object(), queue);本文实例讲述了Java对象的四种引用方式。分享给大家供大家参考,具体如下:
一 点睛
Java语言对对象的引用有如下四种方式
- 强引用:我们平时一般都是这种引用,当一个对象被一个或一个以上的引用变量所引用时,它处于可达状态,不可能被系统垃圾回收机制回收。
- 软引用:软引用需要通过SoftReference类来实现,当一个对象只具有软引用时,它有可能被垃圾回收机制回收。对于只有软引用的对象而言,当系统内存空间足够时,它不会被系统回收,程序也可以使用该对象,当系统内存空间不够时,系统可能回收它。软引用通常用于对内存敏感的程序中。
- 弱引用:弱引用通过WeakReference类实现,弱引用和软引用很像,但弱引用的引用级别更低。对于只有弱引用的对象而言,当系统垃圾回收机制运行时,不管系统内存是否足够,总会回收该对象所占用的内存。当然,并不是说当一个对象只有弱引用时,它就会被立即回收,而是必须等到系统垃圾回收机制运行时才会被回收。
- 虚引用:虚引用通过PhantomReference类实现,虚应用完全类似于没有引用。虚引用对对象本身没有太大影响,对象甚至感觉不到虚引用的存在。
二 实战——若弱引用所引用对象的垃圾回收过程
1 代码
import java.lang.ref.*; public class ReferenceTest { public static void main( String[] args ) throws Exception { // 创建一个字符串对象 String str = new String("疯狂Java讲义"); // 创建一个弱引用,让此弱引用引用到"疯狂Java讲义"字符串 WeakReference wr = new WeakReference(str); //① // 切断str引用和"疯狂Java讲义"字符串之间的引用 str = null; //② // 取出弱引用所引用的对象 System.out.println(wr.get()); //③ // 强制垃圾回收 System.gc(); System.runFinalization(); // 再次取出弱引用所引用的对象 System.out.println(wr.get()); //④ } }
2 图解
3 运行
疯狂Java讲义
null
更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。

