Java的引用
有那些引用方式?
Java中共有四种引用方式,分别是①强引用 ②软引用 ③弱引用 ④虚引用
提供这些引用方式的目的是什么?
①可以使程序员可以通过代码控制或知晓对象的生命周期
②有利于程序的垃圾回收
一、强引用
表现形式:new 例如Object o = new Object();
引用强度:强引用是四种引用方式中强度最高的方式,只要强引用存在,垃圾回收器就不会对引用对象进行回收,即使内存不足,虚拟机也只会报出OOM(Out Of Memory 计算机内存耗尽 )异常,而不会去执行垃圾回收工作。
强引用的回收:①当方法运行结束,引用消失,强引用对象将被回收
②将引用赋值为null;
二、软引用
表现形式:SoftReference sr = new SoftReference(new String(“hello”));
引用强度:软引用的引用强度次于强引用,用来设定有用但不必须的对象,当计算机中的内存充足时,引用对象将不会被回收,但当计算中内存不足时,引用对象将被垃圾回收器回收。
软引用的使用:软引用能防止出现内存不足的情况,常用于实现网页的缓存,图片缓存等。当软引用对象未被回收时,使用软引用类所提供的get方法将返回该对象的强引用,若被回收,将返回null。
三、弱引用
表现形式:WeakReference weakReference = new WeakReference(new User());
引用强度:弱引用的引用强度次于软引用,弱引用用于设定不必须的对象,该对象无论内存是否充足,当垃圾回收进行时都将被回收,并且与之关联的引用(只与其关联)都将被回收。
四、虚引用
表现形式:虚引用必须与引用队列关联使用,例如ReferenceQueue queue = new ReferenceQueue();
PhantomReference<byte[]> reference = new PhantomReference<byte[]>(new byte[1], queue);
引用强度:虚引用的引用强度是四种引用中强度最弱的,这意味着虚引用的的对象在任何时候都有可能被GC回收,同时也可以看出虚引用并不影响对象的生命周期
一天不学习我心赤闹,奥利给,干啦。