У меня есть приложение, которое периодически должно обрабатывать большие блоки данных с помощью вычислительно тривиального алгоритма. Оказывается, я также могу предотвратить замедление системы от доступа к жесткому диску, храня блоки данных в кеше памяти. Приложение является приложением с низким приоритетом, поэтому я работаю над тем, чтобы минимизировать его влияние на систему по всем направлениям, что означает использование дополнительной памяти (при наличии) для снижения нагрузки на процессор и жесткие диски. Кэшированные данные занимают всего 64 МБ блоков байтов, и чем больше у меня в памяти, тем меньше накладных расходов у программы на дисках.
Что мне нужно сделать, так это сбросить кэш в памяти, когда любому другому приложению в системе требуется больше физической памяти, чем доступно, и сделать это настолько быстро, чтобы пользователь никогда не чувствовал замедления системы из-за высоких требований к памяти.
Меня особенно интересует, как это можно сделать в приложении .NET.