垃圾收集时从对象管理器中取消注册对象(Java)

时间:2014-12-09 02:27:54

标签: java reference garbage-collection

在我的游戏中,我有一个包含一组公民的Population课程。每个人在实例化时用PopulationManager注册自己。 PopulationManager包含对游戏中所有Population个对象的引用;它用于分析种群并快速检索种群。

我游戏中的许多结构可能包含Population。防爆。 Town包含Population。当一个城镇被摧毁时,我希望人口对象也不再存在。但是,即使我摧毁了一个城镇,它的Population对象仍然存在,因为PopulationMananger中有一个对它的引用。

有没有办法在Population中删除PopulationManager对象的Town对{@ 1}}的引用,而不显式调用某种注销(人口) PopulationManager中的方法?或者每次镇毁时我都会被迫手动删除参考?

1 个答案:

答案 0 :(得分:0)

尝试使用weakHashMap,将键作为城镇对象,将值作为填充对象。

WeakHashMap只是anotehr Map,用于保存弱引用的轨迹,即在您的情况下,如果所有城镇对象都被赋值为null,则weakHashMap将确保在垃圾回收时,对应于该城镇对象的条目被删除

这样,你只需关心城镇对象,其余的将由WeakHashMap本身完成