Java中的弱引用机制:内存回收示例
在Java中,弱引用(Soft Reference)是一种特殊引用,它不会阻止垃圾收集器对被引用对象的回收。换句话说,即使有弱引用指向一个对象,只要垃圾收集器认为该对象已经无生存价值,就会对其进行回收。
下面是一个简单的弱引用内存回收示例:
// 创建对象,强引用
Object strongRefObj = new Object();
System.out.println("创建强引用对象: " + strongRefObj);
// 创建弱引用
WeakReference weakRef = new WeakReference<>(strongRefObj);
System.out.println("创建弱引用指向强引用对象: " + weakRef);
// 对象生存时间结束,垃圾收集器回收对象
System.gc();
System.out.println("垃圾收集器回收后,弱引用指向的对象状态: " + weakRef.get()); // 通常返回null,表示对象已经被垃圾收集器回收
在这个示例中,我们首先创建了一个强引用对象。然后,我们创建了一个弱引用,它指向那个强引用对象。
当系统调用System.gc()
来触发垃圾收集时,如果之前有弱引用指向的对象,那么在垃圾收集后,弱引用将无法获取到指向的对象,即返回null
。
还没有评论,来说两句吧...