2016-10-04 2 views
-1

Я хочу установить метод автоматической очистки для приложения, работающего на рабочем столе, потому что он выдает ошибку «вне памяти».TO Clean C# кэш-память программы

Есть ли способ сделать это?

.

+1

Этот вопрос не содержит достаточного количества данных, чтобы помочь вам, но вы можете отменить назначение больших переменных и вызвать 'GC.Collect' –

+0

Если у вас заканчивается память с помощью C#, то это потому, что вы не выпускаете какой-либо ресурс или вам просто требуется больше ресурсов, чем доступно. Сборщик мусора будет работать, когда он будет готов к запуску, что определяется его собственной внутренней логикой. Срабатывание сборок мусора может иметь серьезное и непреднамеренное воздействие на производительность, поскольку предметы повышаются до более длинных порций. – LordWilmore

ответ

4

Существует уже «автоматический метод очистки»; GC. Вам практически не нужно рассказывать, что делать - он понимает память больше, чем большинство людей. Если ваш код бросает OOM, вам необходимо выяснить , почему; например, вы пропускаете объекты? (для этого печально известны статические обработчики событий); вы просите огромные плиты смежной памяти (огромные массивы и т. д.)? вы запрашиваете массив размером более 2 гигабайт (без поддержки большого массива)? вы работаете на 32-битных и просто используете много памяти? это на самом деле не действительно условие OOM, но действительно GDI + ручное истощение (которое демонстрирует точно так же)?

Первое, что нужно проверить - сколько памяти использует ваш процесс - и насколько свободна память ОС - когда она выбрасывает OOM. Если есть много свободной памяти, на самом деле это не OOM (если вы не используете более 1 гигабайта в 32-битной системе, и в этом случае все ставки отключены).