Это называется пул объектов.Это полезно, если создание или уничтожение объектов является дорогостоящим и есть возможности для повторного использования.
Вы можете управлять пулом вручную.Возьмите предметы по необходимости и верните их после использования.Это склонно к ошибкам.Вы можете забыть вернуть элементы (оставив их в GC, возможно, удерживая ресурсы, такие как дескрипторы файлов).Вы также можете вернуться рано, что приведет к одновременной работе двух потребителей пула с одним и тем же объектом.
Вы также можете использовать воскресение объекта , чтобы определить, когда предмет был отброшен, и автоматически вытянуть его.в бассейн.На мой взгляд, это не работает на практике.В зависимости от поведения GC это может привести к огромным колебаниям в потреблении ресурсов.Существует также большой потенциал для очень серьезных ошибок.
По всей вероятности, вам просто нужно будет правильно использовать пул объектов.На ум приходит образец типа
var obj = pool.Take();
try {
Use(obj);
}
finally {
pool.Return(obj);
}
.Вы также можете использовать using
для этого.