标签:private 解决 int 内存 == omr static creat lan
import java.lang.ref.WeakReference; public class ReferenceTest { public static void main(String[] args) { // 创建一个字符串对象 String str = new String("我爱学java"); // 创建弱引用,让此弱引用引用到"我爱学java"字符串 WeakReference wr = new WeakReference(str); // 切断str和我爱学java字符串之间的引用 str = null; // 去除弱引用所引用的对象 System.out.println(wr.get()); // 强制垃圾回收 System.gc(); // 调用finalize方法 System.runFinalization(); // 再次取出弱引用的对象 System.out.println(wr.get()); //================================================================= Object obj = wr.get(); if (obj == null) { // 重建一个 wr = new WeakReference(recreateIt()); obj =wr.get(); System.out.println(obj); } //再次切断 obj =null; System.out.println(obj); } private static Object recreateIt() { String str = new String("新的字符串对象"); return str; } }
(2)虚引用
import java.lang.ref.PhantomReference; import java.lang.ref.ReferenceQueue; import java.lang.ref.WeakReference; public class PhantomReferenceTest { public static void main(String[] args) { // 创建一个字符串对象 String str = new String("我爱学java"); // 创建一个引用队列 ReferenceQueue rq = new ReferenceQueue(); // 创建一个虚引用,让虚引用 引用到"我爱学java" PhantomReference pr = new PhantomReference(str, rq); // 切断str和我爱学java字符串之间的引用 str = null; // 并不能通过虚引用获取被引用的对象,输出就为null System.out.println(pr.get()); // 强制垃圾回收 System.gc(); // 调用finalize方法 System.runFinalization(); // 垃圾回收之后,虚引用将被放在引用队列中 //取出引用队列中最先进入队列引用与pr进行比较 System.out.println(rq.poll() == pr); } }
标签:private 解决 int 内存 == omr static creat lan
原文地址:https://www.cnblogs.com/charlypage/p/8902218.html