Допустим, у меня есть класс Collection, который содержит список предметов.
public class Collection
{
private List<Item> MyList;
//...
}
У меня есть несколько экземпляров этого класса Collection, которые имеют разные списки MyList, но совместно используют некоторые элементы.
Например: в списке 10 элементов, ссылки Collection1 на элементы 1-4, коллекции Collection2 есть элементы 2-8 и Collection3 4,7,8 и 10.
Я реализовал это следующим образом: у меня есть один глобальный список, который содержит любые доступные элементы. Перед созданием новой Коллекции я проверяю, есть ли уже нужные мне Предметы в этом списке - если нет, я создаю Предмет и добавляю его в глобальный Список (и, конечно, в Коллекцию).
Проблема, которую я вижу, состоит в том, что эти Элементы никогда не будут выпущены - даже если все Коллекции исчезнут, память, которую они потребляют, все еще не освобождена, потому что глобальный список все еще ссылается на них.
Это то, что мне нужно беспокоиться? Если так, что я должен сделать? Я подумал о добавлении счетчика в глобальный список, чтобы увидеть, когда Предмет больше не нужен, и удалить его ссылку.
Edit:
На самом деле это проблема дизайна, я думаю. Я откажусь от идеи глобального списка и вместо этого переберу все коллекции и посмотрю, есть ли у них уже нужный предмет.