今天看了一个JAVA内存垃圾管理的例子,觉的很有意思!贴到网上(以备回顾)
package test;
import java.lang.ref.WeakReference;
import java.util.WeakHashMap;
import javax.swing.text.html.HTMLDocument.HTMLReader.IsindexAction;
public class testWeakReference {
public static void main(String[] args) {
System.out
.println("=======================弱引用对象垃圾收集情况================");
myWeakObject mwo = new myWeakObject("myweakobject1");
WeakReference wr = new WeakReference(mwo);
mwo = null;
((myWeakObject) wr.get()).show();
System.out.println("第一次垃圾收集!!!");
System.gc();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (wr.get() != null) {
((myWeakObject) wr.get()).show();
}
System.out
.println("==========================弱引用MAP=========================");
WeakHashMap whm = new WeakHashMap();
myWeakObject mwo2 = new myWeakObject("myweakobject2");
whm.put(mwo2, "XXXXX");
mwo2 = null;
((myWeakObject) whm.keySet().iterator().next()).show();
System.out.println("第二次垃圾回收!!!");
System.gc();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
((myWeakObject) whm.keySet().iterator().next()).show();
}
}
class myWeakObject {
String mwname;
public myWeakObject(String mwname) {
super();
this.mwname = mwname;
}
public void finalize() {
System.out.println(mwname + "对象满足垃圾收集条件,被收集!!!");
}
public void show() {
System.out.println(mwname + "对象还可以被调用!!!");
}
}
分享到:
2009-10-12 20:04
浏览 2330
评论