| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Лимит памяти процесса |
| Автор: CPlusPlusFAN 13.3.2008, 00:11 | ||
| Здравствуйте. Я создаю процесс и хочу, чтобы он не мог выделить, например, более 16 Мб. А при возникновении такового факта можно было опознать превышение памяти. К примеру, чтобы выдавалась ошибка или что-то вроде того. ЗЫ Ещё вопрос про память: Что означает поле PeakWorkingSetSize структуры PROCESS_MEMORY_COUNTERS, которая используется в функции GetProcessMemoryInfo? В MSDN написано:
Но от этого понятнее не становится. |
| Автор: korian 13.3.2008, 00:32 |
максимум, которое достигало WorkingSetSize переписывать глобальные new и delete, правда, так можна будет контролировать только размер кучи. а как контролировать стек, без понятия. |
| Автор: CPlusPlusFAN 13.3.2008, 11:01 | ||||
Программа, которую я запускаю, абсолютно неконтролируема и может выделить сколько угодно памяти.
Я сомневаюсь, что это приемлемо, поскольку постоянный мониторинг памяти, хоть и в параллельном потоке, будет притормаживать работу процесса. А вот это я попробую. |
| Автор: dumb 13.3.2008, 12:45 | ||
какого еще процесса? - если в отдельном потоке, то оно всю систему будет "притормаживать". и потом, ясное дело, подразумевается использование Sleep'а между вызовами, либо вообще по таймеру. |
| Автор: MAKCim 13.3.2008, 12:52 |
| как все запущено в Linux все решается через setrlimit() |
| Автор: CPlusPlusFAN 13.3.2008, 13:11 | ||
Запускать её необходимо, более того, у меня есть её исходник, но его трогать нельзя, а то по шапке дадут. Скажем так, аналоги есть, но они бесполезны. |
| Автор: CPlusPlusFAN 13.3.2008, 19:40 | ||
Как-то JOB'ы не очень соотносятся с циклом выполнения процесса:
Боюсь, WaitForMultipleObjects(2, H, false, INFINITE) заглушит получение сообщений об ошибках. |
| Автор: dumb 13.3.2008, 21:58 |
| так надо было сразу сказать, что у тебя процесс запускается под отладкой. в таком случае ожидание на pi.hProcess вообще не нужно, да и ожидание сообщения от job'а можно выкинуть(из вышеприведенного примера убрать все, что связано с hPort) - оставить только установку лимита: после исчерпания оного в приложении возникнет исключение и к тебе в цикл отладчика "приедет" уведомление о нем. |
| Автор: CPlusPlusFAN 14.3.2008, 15:45 | ||
Спасибо ещё раз, dumb!
Я не знал, что это играет какую-то роль. Но как присмотрелся и увидел WaitForMultiplyObjects понял, что это важно. dumb, я тебе уже + поставил за ответ. Ты настоящий профи! |
| Автор: andrew_121 15.3.2008, 04:32 |
Модератор: Сообщение скрыто. |