Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 906

/ вопрос открыт /

Здравствуйте!
1. Как получить информацию о том, сколько оперативной памяти использует программа в данный момент?

Ilia Ermakov Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Ilia Ermakov (статус: 1-ый класс)
Вопрос отправлен: 9 сентября 2007, 23:54
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: Матвеев Игорь Владимирович

Здравствуйте, Ilia Ermakov!
Сначала отмечу, что то, что написанно в TaskList не соответствует действительности, а вообще вопрос довольно широк и на него нельзя ответить одним предложением. Допустим адресное пространство всех отображенных в память процесса dll причислять к используемой памяти или нет (ведь они могут быть и не Вашими библиотеками, скажем Socrat (переводчик) ставит хук на клавиатуру, чтобы всплывать по нажатию определенной комбинации, его dll отображается в адресное пространство всех процессов, сейчас развелось довольно много подобных программ). В простейшем случае можно пробежать по всем 4 ГБ виртуального адресного пространства, выделяемого процессу, пропуская неинициализированные области и считая суммарный размер инициализированных.

Также возможно стоит обратить внимание на специальные утилиты отслеживания утечек памяти, вроде CodeGuard.

Ответ отправил: Матвеев Игорь Владимирович (статус: Студент)
Время отправки: 10 сентября 2007, 00:57
Оценка за ответ: 4

Ответ #2. Отвечает эксперт: Feniks

Здравствуйте, Ilia Ermakov!
Попробуйте следующий код в приложении...

Приложение:
  1. {$APPTYPE CONSOLE}
  2.  
  3. program res;
  4. function MyGetFreeSystemResources32(Id:integer):integer;
  5.  
  6. stdcall; external 'rsrc32' name '_MyGetFreeSystemResources32@4';
  7. const
  8.  
  9. rSystem=0;
  10. rGDI=1;
  11. rUSER=2;
  12. begin
  13.  
  14. writeln('free resources');
  15. writeln('System:',MyGetFreeSystemResources32(rSystem),'%');
  16. writeln('GDI:',MyGetFreeSystemResources32(rGDI),'%');
  17. writeln('USER:',MyGetFreeSystemResources32(rUSER),'%');
  18. end.


Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 11 сентября 2007, 16:04
Оценка за ответ: 5


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:29
Выполнено за 0.02 сек.