Настройка сборки мусора .NET для объектов, о которых известно, что они имеют долгую жизнь - PullRequest
1 голос
/ 23 мая 2011

Я работаю в приложении .NET, где у нас очень большой кеш, реализованный с помощью словаря. Я удаляю вещи из кеша через TTL и жнец, который периодически проверяет устаревшие предметы. Заданное общее значение TTL будет порядка часов. Учитывая это, могу ли я что-нибудь сделать для каждого объекта, помещая его в кеш, чтобы мне не приходилось проходить через Gen0 и Gen1 каждый раз, когда я хочу что-то кэшировать часами?

РЕДАКТИРОВАТЬ: я должен уточнить мой вопрос лучше. Я понимаю, как работает сборка мусора .NET, и я знаю, что он хорош в своей работе. Я согласен, что в идеальных ситуациях вы бы хотели, чтобы все работало так, как было задумано. Тем не менее, в частности, я хотел бы знать, есть ли способ контролировать, как это работает в этом конкретном сценарии.

Ответы [ 2 ]

3 голосов
/ 23 мая 2011

Ваш объект будет продвигаться в Gen2 относительно быстро, так как ваш словарь всегда оставит его в корне.

Не существует API, который позволял бы выделять ресурсы непосредственно другому поколению, но я сомневаюсь, что это окажет реальное влияние на производительность, поскольку для продвижения объектов очень быстро, если они оставаясь на месте. Любой кэш с объектами, которые имеют многочасовое время жизни, не должен распределяться так часто, поэтому экономия, которую вы получите, даже если это возможно, будет тривиальной.

0 голосов
/ 27 мая 2011

Если кэш большой, вы можете захотеть взглянуть на объединение объектов в кеше, а не избавляться от них через некоторое время и добавлять новые.были спрятаны в угол Gen 2, и GC может долго не собираться собирать.Это может привести к увеличению объема используемой памяти для приложения, вызванного объектами, которые не используются, но также не собираются, пока ГХ не подвергается достаточному стрессу, чтобы оправдать их откапывание.к сценарию запуска этого экземпляра в течение длительного времени, но если вы выбрасываете вещи через несколько часов, похоже, что это то, что вы делаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...