Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Системное программирование и WinAPI > Управление памятью для программ |
Автор: GekaP404 13.3.2012, 12:31 |
Постановка задачи: Необходимо ограничить выделяемую память для какого-нибудь приложения. Ну к примеру необходимо чтобы на "%name"интернет браузер выделялось не более 150мб памяти. Собственно нужен Ваш совет. Какую литературу можно почитать ?, есть ли такая реализация ? если есть можете скинуть программный код. |
Автор: xvr 13.3.2012, 13:24 |
Вот http://technet.microsoft.com/en-us/library/cc755056.aspx штука вроде умеет |
Автор: GekaP404 13.3.2012, 21:03 |
эта штука умеет, а вот был бы код и возможность внесения своих изменений))) Собственно вот, что выяснил сегодня, но не разобрался. Функция SetProcessWorkingSetSize. Может кто работал с ним ? и поможет разодраться. |
Автор: xvr 13.3.2012, 22:26 |
Это не то. Эта функция ограничит количество физической памяти, которую сможет использовать процесс, но не ограничит количество виртуальной памяти. Т.е. процесс все равно сможет заказать больше памяти, чем установленно через SetProcessWorkingSetSize, и при попытке ее использовать у процесса пойдет трешинг в своп (что закончится глобальным замедлением всей системы) |
Автор: GekaP404 19.3.2012, 22:01 | ||
Спасибо xvr и GremlinProg за ответы!!! Кстати а как программы справляется когда само по себе мало физической памяти? А вообще возможно как-то ограничить чего-нибудь, что бы на важные процессы выделялось больше памяти(машинного времени идр)т.е. не тратилось на пустое, и не необходимое. |
Автор: GremlinProg 20.3.2012, 07:35 | ||||
активно используют своп-файл (файл подкачки), вобщем - вместо быстрой физической используют медленную (как правило) дисковую память если дисковой мало - просто падают ![]()
приоритет процесса, потока? |