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