Ответ 1
Используйте Windows Объекты работы. Задания похожи на группы процессов и могут ограничить использование памяти и приоритет процесса.
Есть ли способ установить системную память, которую может использовать процесс в Windows XP? У меня есть пара нестабильных приложений, которые работают нормально в течение большей части времени, но могут поражать ошибку, которая приводит к тому, что она потребляет целую память за считанные секунды (или, по крайней мере, я полагаю, что она). Это приводит к жесткому reset, поскольку Windows становится полностью не реагирующей, и я теряю свою работу.
Я хотел бы иметь возможность сделать что-то вроде /etc/limits в Linux - например, установить M90 (установить максимальную память на 90% для отдельного пользователя). Таким образом, система получает оставшиеся 10% независимо от того, что.
Используйте Windows Объекты работы. Задания похожи на группы процессов и могут ограничить использование памяти и приоритет процесса.
Используйте инструмент Application Verifier (AppVerifier) от Microsoft.
В моем случае мне нужно смоделировать память, которая больше не доступна, поэтому я сделал следующее в инструменте:
Через 2 минуты моя программа больше не может выделять новую память, и я смог увидеть, как все было обработано.
В зависимости от ваших приложений может быть проще ограничить память, которую использует интерпретатор языка. Например, с помощью Java вы можете установить объем оперативной памяти, который будет выделен JVM.
В противном случае его можно установить один раз для каждого процесса с помощью API Windows
Невозможно сделать это, о котором я знаю, хотя мне очень любопытно читать, если у кого есть хороший ответ. Я думал о добавлении чего-то подобного в одно из приложений, созданных моей компанией, но не нашел хорошего способа сделать это.
Единственное, о чем я могу думать (хотя и не прямо на месте), это то, что я считаю, что вы можете ограничить общее использование памяти для приложения COM + в Windows. Это потребует, чтобы приложение было написано для запуска в COM +, конечно, но это самый близкий способ, о котором я знаю.
Рабочий набор данных хорош (объекты заданий также управляют рабочими наборами), но это не общее использование памяти, а только реальное использование памяти (выгружается) в любой момент времени. Он может работать на то, что вы хотите, но afaik не ограничивает общую выделенную память.