Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2014, 12:52   #1
calypso
Форумчанин
 
Регистрация: 02.12.2012
Сообщений: 250
По умолчанию Максимум памяти,который использовал процесс при работе

1.Запускаем процесс
2. Ждем пока он завершит работу
3. Выдаем MemMax, максимальное количество памяти,которое он использовал в работе. Именно объем физического ОЗУ,а не виртуальных страниц
calypso вне форума Ответить с цитированием
Старый 03.03.2014, 13:04   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Разрешаю, можешь начинать это делать.
Человек_Борща вне форума Ответить с цитированием
Старый 03.03.2014, 13:41   #3
calypso
Форумчанин
 
Регистрация: 02.12.2012
Сообщений: 250
По умолчанию

Не понял стеба вашего. По-моему,неплохой вопрос. Как запускать процесс,я знаю.
Теперь,далее:
http://msdn.microsoft.com/ru-ru/libr...vs.110%29.aspx
Во-первых,на ХР она работать не будет я так понял. Во-вторых, выдаст реальный объем RAM или количество виртуальных страниц как GetMemoryInfo?
calypso вне форума Ответить с цитированием
Старый 03.03.2014, 14:12   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от calypso Посмотреть сообщение
Не понял стеба вашего. По-моему,неплохой вопрос. Как запускать процесс,я знаю.
Теперь,далее:
http://msdn.microsoft.com/ru-ru/libr...vs.110%29.aspx
Во-первых,на ХР она работать не будет я так понял. Во-вторых, выдаст реальный объем RAM или количество виртуальных страниц как GetMemoryInfo?
объем памяти в принципе измеряется страницами.
и виртуальность страниц(о которой вы похоже и не столь много знаете) тут не причем.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.03.2014, 14:48   #5
calypso
Форумчанин
 
Регистрация: 02.12.2012
Сообщений: 250
По умолчанию

Меня сбила с толку вот эта тема:
http://www.cyberforum.ru/delphi/thread766547.html
Особенно картинка там,где видно что GetProcessMemoryInfo возвращает количество памяти совсем не такое,как Диспетчер задач.

Про виртуальность страниц знаю из книги Рихтера, если память не изменяет - то Windows меряет ОЗУ общее и ей до лампочки,находится страница в физической памяти или в файле подкачки. Мне конечно хотелось бы знать,сколько МБ или ГБ процесс занимает именно в физической памяти, единственная мысль - отрубить pagefile.sys полностью и тогда избавимся от виртуальности.
calypso вне форума Ответить с цитированием
Старый 03.03.2014, 15:05   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Особенно картинка там,где видно что GetProcessMemoryInfo возвращает количество памяти совсем не такое,как Диспетчер задач.
и там же в конце ТС говорит что смотрел не тот столбец.
диспетчер так же получает данные.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.03.2014, 15:43   #7
calypso
Форумчанин
 
Регистрация: 02.12.2012
Сообщений: 250
По умолчанию

Вот как вам такой изощренный способ:
http://stackoverflow.com/questions/1...ge-post-mortem
Ну с инжектом библиотеки ещё понятно,чтобы не писать свою запускалку с CreateProcess. А зачем они замеряют память по файлу подкачки??
calypso вне форума Ответить с цитированием
Старый 04.03.2014, 09:35   #8
calypso
Форумчанин
 
Регистрация: 02.12.2012
Сообщений: 250
По умолчанию

Сделал так:
Код:
procedure TForm2.Button1Click(Sender: TObject);
var
si:STARTUPINFO;
pi:PROCESS_INFORMATION;
counters:PROCESS_MEMORY_COUNTERS;
begin
ZeroMemory(@si,sizeof(si));
CreateProcess(PWideChar('C:\Program Files\Nero\Nero 11\Nero Burning ROM\nero.exe'),nil,nil,nil,FALSE,NORMAL_PRIORITY_CLASS,nil,PWideChar('C:\Program Files\Nero\Nero 11\Nero Burning ROM'),&si,&pi);
WaitForSingleObject(pi.hProcess,INFINITE);
GetProcessMemoryInfo(pi.hProcess,@counters,sizeof(PROCESS_MEMORY_COUNTERS));
ShowMessage('Процесс завершен! Максимальная загрузка памяти, КБ: '+IntToStr(counters.PeakWorkingSetSize div 1024));
end;
calypso вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка доступа памяти, при работе с принятой строкой. Zeraim Работа с сетью в Delphi 11 26.01.2010 01:11
Утечка памяти при работе с GDI+ Ivan_32 Общие вопросы C/C++ 2 29.11.2009 00:12
Бешеное потребление виртуальной памяти при работе в Excel 2003 dikdm Microsoft Office Excel 2 28.04.2009 13:10
Создать процесс из памяти Ring0Sn Общие вопросы Delphi 4 23.08.2008 02:55