773FF писал(а):Вкурил мануалы: SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1) в общем-то освобождает память за счёт перекидывания данных в файл подкачки. От этого может упасть производительность приложения. Но если приложение выполняет не очень сложную задачу, то в принципе можно так экономить ОЗУ или по крайней мере утешить пользователей вашего Win32NT приложения.
Раскуривал правильно?
Вольный пересказ писал(а):Функция используется для установки процессу нужного объема оперативной памяти, которая по возможности не будет сбрасываться в файл подкачки. Указав вторым и третьим параметром значение -1 будет обеспечен программе рабочий минимум ОЗУ без сброса в своп.
Думаю смысл понятен.
Вот еще:
С сайта gotdotnet писал(а):Вопрос:
Почему моя программа занимает столько памяти?
Ответ:
На самом деле, это не память, реально «отъедаемая» вашим приложением, а так называемое «рабочее множество» (working set; такой перевод устоялся довольно давно). Рабочее множество – термин из теории операционных систем, и означает он совокупность страниц памяти, используемых процессом в стационарном состоянии. То есть, проще выражаясь, это память, отложенная процессом «про запас». Вообще говоря, как правило большинство приложений не использует все свое рабочее множество, оно устанавливается операционной системой при запуске «на глазок» (упрощенно конечно), а если приложение требует больше памяти, рабочее множество автоматически расширяется. Расширение рабочего множества – довольно длительная операция, поэтому в большинстве случаев целесообразно оставлять его с запасом, что операционная система и делает.
Однако, если вам действительно нужно, чтобы приложение в памяти было «незаметно», есть возможность урезать свое рабочее множество вручную. К сожалению, сделать это можно только прибегнув к Win32 API, к конкретно – к функции SetProcessWorkingSetSize:
Первый параметр – это хендл процесса, который можно получить из System.Diagnostics.Process.GetCurrentProcess().Handle, а второй и третий параметр – это соответственно минимальный и максимальный размер рабочего множества. Понятно, что рассчитывать нужные размеры – задача та еще, поэтому функция имеет один приятный сервис: если в качестве второго и третьего параметра указать -1 (минус единицу), операционная система сама посчитает, какие размеры нужны вашему приложению и установит рабочее множество по минимуму.
Если не будешь считать "ручакми" сколько надо памяти то свопинга не будет!