`
zhaohong
  • 浏览: 59308 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

java弱引用

阅读更多

今天看了一个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 + "对象还可以被调用!!!");
	}

}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics