Apr 09

Сколько памяти занимает программа?

В прошлой записи было показано, как освободить, не занятую программой, память. Но вот как можно просто определить, сколько занимает программа? Оказывается, все очень просто!

Используем следующий код:

uses psAPI;
{...}
function CurrentProcessMemory: Cardinal;
var
MemCounters: TProcessMemoryCounters;
begin
MemCounters.cb := SizeOf(MemCounters);
if GetProcessMemoryInfo(GetCurrentProcess,
@MemCounters,
SizeOf(MemCounters)) then
Result := MemCounters.WorkingSetSize
else
RaiseLastOSError;
end;

Все. Эта функция вернет, в байтах, количество памяти, занимаемое текущим процессом. Просто и удобно.

С помощью TProcessMemoryCounters можно получить и другие полезные данные:

  1. PageFaultCount
  2. PeakWorkingSetSize
  3. WorkingSetSize
  4. QuotaPeakPagedPoolUsage
  5. QuotaPagedPoolUsage
  6. QuotaPeakNonPagedPoolUsage
  7. QuotaNonPagedPoolUsage
  8. PagefileUsage
  9. PeakPagefileUsage

Сам я эти параметры не испытавал и не проверял - оставляю на вас.

П.С. Все киноновинки сезона с красочными описаниями Вы може посмотреть онлайн и абсолютно бесплатно на веб-сайте online-r.net.ru. Кроме того на данном ресурсе Вы имеете возможность заказать понравившейся фильм онлайн. Хорошего просмотра дорогие друзья!


  1. Виктор
     Add karma Subtract karma  +2
    Цитировать.

    Спасибо за полезные советы!
    Удивительно, таким образом у меня используемая память на тестовом примере уменьшилась в 18,5 раз!

    Отличный ресурс – буду регулярным читателем!
    Спасибо!

    1

Поделитесь вашими мыслями

Поддерживаемые теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>