比方说,我有一个类集合,其中包含项目列表。在这种情况下,我应该担心释放资源吗?
public class Collection
{
private List<Item> MyList;
//...
}
我有这个Collection类的几个实例,它们都有不同的MyLists但共享一些项目。 例如:有10个项目,Collection1参考项目1-4,Collection2在其列表中包含项目2-8和Collection3 4,7,8和10。
我实现了这个如下:我有一个全局列表,其中包含任何可用的项目。在我创建一个新集合之前,我检查是否已经有这个列表中需要的项目 - 如果没有,我创建项目并将其添加到全局列表(以及当然的集合)。
我看到的问题是那些项目永远不会被释放 - 即使所有集合都消失了,它们消耗的内存仍然没有被释放,因为全局列表仍然引用它们。 这是我需要担心的事吗?如果是这样,我该怎么办?我想为全局列表添加一个计数器,以查看何时不再需要某个项目并删除其参考。
编辑: 这实际上是一个设计问题,我认为。我将放弃全局列表的想法,而是遍历所有集合,看看他们是否已经拥有所需的项目。
感谢提到弱引用 - 我不知道他们。但我不认为它们与我的问题有关。 – CaptainProton 2009-07-17 05:52:59