java回收机制使用 WeakHashMap

7 篇文章 0 订阅
package gcmap;

public class Element {
	private String ident;

	public Element(String id) {
		ident = id;
	}

	@Override
	public String toString() {
		return ident;
	}

	@Override
	public int hashCode() {
		return ident.hashCode();
	}

	@Override
	public boolean equals(Object r) {
		return r instanceof Element && ident.equals(((Element) r).ident);
	}
	
	@Override
	protected void finalize() throws Throwable {
		System.out.println("Finalizing "+getClass().getSimpleName()+" "+ident);
	}
}


package gcmap;

public class Key extends Element{

	public Key(String id) {
		super(id);
	}

}

package gcmap;

public class Value extends Element{

	public Value(String id) {
		super(id);
	}

}

package gcmap;

import java.util.Set;
import java.util.WeakHashMap;

public class CannonicalMapping {
	public static void main(String[] args) {
		int size=10;
		if(args.length>0){
			size=new Integer(args[0]);
		}
		Key[] keys=new Key[size];
		WeakHashMap<Key, Value> map=new WeakHashMap<Key, Value>();
		for(int i=0;i<size;i++){
			Key k=new Key(Integer.toString(i));
			Value v=new Value(Integer.toString(i));
			if(i%3==0){
				keys[i]=k;
			}
			map.put(k, v);
		}
		System.gc();
		try {
			Thread.sleep(5000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		Set<Key> _keys=map.keySet();
		for(Key key:_keys){
			System.out.println("key :"+key+";value :"+map.get(key));
		}
	}
}

输出结果:

Finalizing Key 8
Finalizing Key 7
Finalizing Key 5
Finalizing Key 4
Finalizing Key 2
Finalizing Key 1
`````````````````````````````````key :9;value :9
`````````````````````````````````key :6;value :6
`````````````````````````````````key :0;value :0
`````````````````````````````````key :3;value :3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值