java 的引用类型

来源:互联网 发布:网络代理 免费 编辑:程序博客网 时间:2024/06/10 16:28
public class Demo {public static void main(String[] args) {/* * 1.强引用(StrongReference) * 我们平常用一个变量 接收 新创建的对象  都是强引用  只要对象有一个强引用 垃圾回收机制 绝不会回收这个对象 * 例如 A a = new A();   * 当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。 */String s = new String("abc");/* * 2.软引用(SoftReference) * 如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它; * 如果内存空间不足了,就会回收这些对象的内存。 * 只要垃圾回收器没有回收它,该对象就可以被程序使用。 */SoftReference<String> softReference = new SoftReference<>(s); /* * 3.弱引用 (WeakReference) * 垃圾回收器一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存 */WeakReference<String> weakReference = new WeakReference<>(s);//当 清除强引用和软引用时 new String("abc")这个对象 只被弱引用 所以这个对象被称为弱可及对象s = null;softReference.clear(); //清除软引用//System.gc(); System.out.println("软引用:"+softReference.get());System.out.println("弱引用:"+weakReference.get());}}

这个时候打印的信息是

软引用:null

弱引用:abc


然后把 System.gc()那行注释打开 

这个时候打印的信息是

软引用:null

弱引用:null





0 0