Я работаю над небольшим приложением для управления закладками, написанным на С#, используя WPF. Он просто сидит в системном лотке и простаивает в 99% случаев. Недавно я посмотрел в диспетчере задач и обнаружил, что он использует около 25 мегабайт памяти (и около 12 мегабайт до его активации в первый раз), что, по моему мнению, было немного для приложения, которое ничего не делает в большинстве случаев. Это заставило меня задуматься, есть ли способы уменьшить использование памяти, например, отключить функции WPF, которые являются необязательными.
Я обнаружил один факт, который может привести к чему-то, хотя я не знаю, как его использовать. Темы в .NET занимают около 1 мегабайта каждый, и, оказывается, мое приложение использует около 6/12 потоков (до и после активации в первый раз). Это объясняет половину моего использования памяти, что довольно важно. Я не создаю новые потоки напрямую, но я понятия не имею, как WPF, а также другие части .NET используют потоки для разных задач, поэтому мне сложно что-то сделать. Используя события для вещей, которые напрямую не связаны с графическим интерфейсом, это, например, порождает новые потоки?
Итак, я предполагаю, что мой вопрос двоякий: как уменьшить объем использования приложений .NET/WPF в памяти и как можно минимизировать количество возникающих потоков? Обратите внимание, что я не столько задумываюсь о небольших деталях, таких как те, которые были выражены в этом ответе, а скорее о том, как разрабатывать для использования с низкой памятью во всем вашем приложении.