MSDN:
public IntPtr MaxWorkingSet { get; set; }
Получает или задает максимально допустимый
размер рабочего набора для ассоциированного
процесс. Значение свойства: максимальное
размер рабочего набора, который разрешен в
память для процесса, в байтах.
Итак, насколько я понимаю, я могу ограничить объем памяти, который может использоваться процессом. Я пробовал это, но без удачи ..
Код:
public class A
{
public void Do()
{
List<string> guids = new List<string>();
do
{
guids.Add(Guid.NewGuid().ToString());
Thread.Sleep(5);
} while (true);
}
}
public static class App
{
public static void Main()
{
Process.GetCurrentProcess().MaxWorkingSet = new IntPtr(2097152);
try
{
new A().Do();
}
catch (Exception e)
{
}
}
}
Я ожидаю исключение OutOfMemory после того, как будет достигнут предел в 2 Мб, но ничего не произойдет. Если я открою диспетчер задач, то увижу, что объем используемой моим приложением памяти постоянно растет без каких-либо ограничений.
Что я делаю не так?
Заранее спасибо