对象的强软弱和虚引用覆盖

激光设备2021年09月06日

在Java集合中有一种特殊的Map类型:WeakHashMap, 在这种Map中存放了键对象的弱引用,当一个键对象被垃圾回收,那么相应的值对象的引用会从Map中删除。WeakHashMap能够节约存储空间,可用 来缓存那些非必须存在的数据。关于Map接口的一般用法,可参见本书第15章的15.4节(Map)。

以下例程的MapCache类的main()方法创建了一个WeakHashMap对象,它存放了一组Key对象的弱引用,此外main()方法还创建了一个数组对象,它存放了部分Key对象的强引用。

例程 va

import il.*;

import f.*;

class Key {

String id;

public Key(String id) { = id; }

public String toString() { return id; }

public int hashCode() {

return shCode();

}

public boolean equals(Object r) {

return (r instanceof Key)

uals(((Key)r).id);

}

public void finalize() {

intln(\"Finalizing Key \"+ id);

}

}

class Value {

String id;

public Value(String id) { = id; }

public String toString() { return id; }

public void finalize() {

intln(\"Finalizing Value \"+id);

}

}

public class MapCache {

public static void main(String[] args) throws Exception{

int size = 1000;

// 或者从命令行获得size的大小

if(ngth 0)size = rseInt(args[0]);

Key[] keys = new Key[size]; //存放键对象的强引用

WeakHashMapKey,Value whm = new WeakHashMapKey,Value();

for(int i = 0; i size; i++) {

Key k = new Key(String(i));

Value v = new Value(String(i));

if(i % 3 == 0) keys[i] = k; //使Key对象持有强引用

t(k, v); //使Key对象持有弱引用

}

//催促垃圾回收器工作

();

//把CPU让给垃圾回收器线程

eep(8000);

}

}

以上程序的部分打印结果如下:

Finalizing Key 998

Finalizing Key 997

Finalizing Key 995

Finalizing Key 994

Finalizing Key 992

搭建思想交流平台 Finalizing Key 991

Finalizing Key 989

Finalizing Key 988

Finalizing Key 986

Finalizing Key 985

Finalizing Key 983

从打印结果可以看出,当执行()方法后,垃圾回收器只会回收那些仅仅持有弱引用的Key对象。id可以被3整数的Key对象持有强引用,因此不会被回收。

查看本文来源

四川成都华西肝病研究所乘车路线
兰州治疗妇科哪好
小孩腹胀不消化怎么办
相关阅读
后悔没到时读懂:职场这3个成功关键点,3个细节和3个成长法则

很少零碎地追再多一部电视剧。兼职之前,总真是一段时间不该不合理在看电...

2023-09-25
恒瑞医药:SHR4640片获药物临床试验批准后通知书

恒瑞医药6月15日晚间公告,公司收到国家药监局核准后签发关于SHR4640片的《...

2023-09-18
新增5个准入地!2022年法考准入条件地方名单汇总

有更加多乒乓私信追问合合杆菌,关于2022法考调高前提条件地四区有哪些的...

2023-09-15
美股短线赛艇 三大股指悉数转跌

美股短线跳水 三大报价才将转跌落 【美股短线跳水 三大报价才将转跌落】...

2023-09-12
非洲西芒杜铁矿项目又被取消了

时隔三个月初,喀麦隆英国政府又一次重启了非洲巨型煤炭西芒梅工程建设。...

2023-09-10
后悔没早看到这些"神"设计,漂亮又实用,众所周知是这3个地方

难过没早看着这些"诸神"新设计,漂亮又实用性,尤其是这3个地方 装修它不...

2023-09-06
友情链接