Схемы кэширования для управляемых языков

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

Существуют ли какие-либо готовые схемы кэширования, из которых я мог бы позаимствовать некоторые идеи?

22.08.2008 18:50:52
2 ОТВЕТА

Все, что вам когда-либо нужно знать (а затем и немного):

http://msdn.microsoft.com/en-us/library/ee817645.aspx

Ох, и GC.Collect () заставляет собирать.

1
21.01.2010 12:02:24

Хотя я, очевидно, не могу говорить о специфике вашего приложения, в большинстве случаев вам не следует привязывать реализацию кэширования к некоторым предполагаемым ожиданиям того, как будет работать GC. Как отмечает Stu, вызов GC.Collect () вызовет сбор (с перегрузками для определенного поколения), но чаще всего это приведет к ухудшению производительности, чем просто позволить GC управлять самим собой.

Если вы обнаружите (после некоторого реального тестирования производительности), что вам нужно взаимодействовать с GC, убедитесь, что вы учитываете различные типы GC, которые в настоящее время имеется в платформе (см. Здесь для получения дополнительной информации).

1
22.08.2008 19:44:11