Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.16;
Скачать: CL | DM;

Вниз

Размер занимаемой приложением памяти.   Найти похожие ветки 

 
MsGuns ©   (2002-10-09 20:58) [0]

Как определить, сколько ОЗУ занято приложением, а заодно сколько ее осталось свободной.


 
Opuhshii ©   (2002-10-10 08:37) [1]

Toolhelp?,..


 
Игорь Шевченко ©   (2002-10-10 13:03) [2]

Именно ОЗУ - никак. Можно определить ПРИМЕРНЫЙ размер виртуальной памяти, по ToolHelp, VitrualQueryEx и т.п.


 
Yegor Derevenets   (2002-10-10 16:44) [3]

Даже можешь не пытаться - скорее всего, никто на этом сайте не знает. Ты не первый в таких вопросах. Я бы и сам хотел узнать, как узнать, скажем, PickMemoryUsage. Если интересует виртуальной - то можно по VirtualQueryEx, как сказал И. Шевченко. Если нужно, даю ссылку на пример (кстати, должен быть где-то в архивах конференции по WinAPI) - yegorod.hotbox.ru/files/download/run.zip


 
TankMan ©   (2002-10-11 03:39) [4]

Ну если никто не знает, так какже пишут тулсы, который определяют объем ОЗУ, который занимает определенное приложение? Или это гении какие-то пишут?... не верю... должне кто-то знать...


 
Rouse_ ©   (2002-10-11 03:43) [5]

Кто-то знает, но молчит, я тоже слежу за этой веткой, но что-то никаких просветов пока нет :(

Желаю успехов


 
Игорь Шевченко ©   (2002-10-11 12:14) [6]

TankMan © (11.10.02 03:39)

Что за тулзы ?

Эта...Руссиновича почитайте, "Внутреннее устройство Windows 2000" - там все написано, в том числе, и почему нельзя определить...


 
Алексей Ким ©   (2002-10-11 12:24) [7]

2Игорь Шевченко
меня тоже интересует этот вопрос, например тулза taskinfo


 
Игорь Шевченко ©   (2002-10-11 12:25) [8]

Алексей Ким © (11.10.02 12:24)

Руссинович - рулез фарева :-)


 
TankMan ©   (2002-10-11 20:49) [9]

>>Игорь Шевченко
Да и memload, у меня валялась.. тоже показывает, сколько - что занимает в памяти.

Я знаю, тут есть один человек... Юрий Зотов, может он знает?
Может кто напишет ему, у меня его почты нет...


 
cdaDmitriy ©   (2002-10-13 19:48) [10]

Это не мое но думаю нжно это

http://www.delphi.xonix.ru/faq/?m=system&n=7


uses PsApi;
// ProcessID - PID (номер процесса)
procedure PrintMemoryInfo(ProcessID:DWORD);
var
hProcess : THANDLE;
pmc: PROCESS_MEMORY_COUNTERS;
begin
// Получаем дескриптор процесса для получения информации о нем
hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, FALSE, processID );

// Функция возвращает информацию о памяти, занимаемой процессом
if GetProcessMemoryInfo( hProcess, @pmc, sizeof(pmc))
then begin
minfo.Items.Clear;
minfo.Items.Add("Ошибок стр.: "+ FloatToStr(pmc.PageFaultCount));
minfo.Items.Add("Макс. использ. памяти (Kb): "+ FloatToStr(pmc.PeakWorkingSetSize/1024));
minfo.Items.Add("Выгружаемый пул (макс.): "+ FloatToStr(pmc.QuotaPeakPagedPoolUsage));
minfo.Items.Add("Выгружаемый пул : "+ FloatToStr(pmc.QuotaPagedPoolUsage));
minfo.Items.Add("Невыгруж. пул (макс.): "+ FloatToStr(pmc.QuotaPeakNonPagedPoolUsage) );
minfo.Items.Add("Невыгруж. пул : "+ FloatToStr(pmc.QuotaNonPagedPoolUsage) );
minfo.Items.Add("Вирт. память (Kb): "+ FloatToStr(pmc.PagefileUsage/1024));
minfo.Items.Add("Макс. вирт. память (Kb): "+ FloatToStr(pmc.PeakPagefileUsage/1024));
minfo.Items.Add("Память (Kb): " + FloatToStr(pmc.WorkingSetSize/1024))
end;
// Закрываем дескриптор
CloseHandle( hProcess );
end;


 
NailS ©   (2002-10-14 13:23) [11]


> cdaDmitriy © (13.10.02 19:48)

GetProcessMemoryInfo не поддерживается в Windows 95/98/Me. ;(


 
Игорь Шевченко ©   (2002-10-14 14:23) [12]

cdaDmitriy © (13.10.02 19:48)

И где здесь написано, сколько ОЗУ занято приложением (именно приложением) ?


 
cdaDmitriy ©   (2002-10-14 16:13) [13]

> Игорь Шевченко ©

запусти и сравни с Windows task manager


 
Игорь Шевченко ©   (2002-10-14 16:45) [14]

cdaDmitriy © (14.10.02 16:13)

???

До Руссиновича, стало быть, руки не дошли ? :-)


 
Севостьянов Игорь ©   (2002-10-15 13:34) [15]

Подправь и действуй (проверено под win2000)

procedure TfrmMain.ShowMemoryStatus;
const
MAX_LINE_SIZE = 58;
sPercent = "%";
sHeapStatus = " Heap Status ";
sMemoryStatus = " Memory Status ";

var
HeapStatus: THeapStatus;
MemStatus: TMemoryStatus;
S: String;
begin
HeapStatus := GetHeapStatus;
with HeapStatus do
begin
S := StringOfChar("*", MAX_LINE_SIZE);
mmoList.Lines.Add(S);
S := StringOfChar(" ", (MAX_LINE_SIZE - Length(sHeapStatus)) div 2);
S := S+sHeapStatus+S;
while Length(S) < MAX_LINE_SIZE do S := S + " ";
mmoList.Lines.Add(S);
S := StringOfChar("=", MAX_LINE_SIZE);
mmoList.Lines.Add(S);
S := Format("TotalAddrSpace %d", [TotalAddrSpace]);
mmoList.Lines.Add(S);
S := Format("TotalUncommitted %d", [TotalUncommitted]);
mmoList.Lines.Add(S);
S := Format("TotalCommitted %d", [TotalCommitted]);
mmoList.Lines.Add(S);
S := Format("TotalAllocated %d", [TotalAllocated]);
mmoList.Lines.Add(S);
S := Format("TotalFree %d", [TotalFree]);
mmoList.Lines.Add(S);
S := Format("FreeSmall %d", [FreeSmall]);
mmoList.Lines.Add(S);
S := Format("FreeBig %d", [FreeBig]);
mmoList.Lines.Add(S);
S := Format("Unused %d", [Unused]);
mmoList.Lines.Add(S);
S := Format("Overhead %d", [Overhead]);
mmoList.Lines.Add(S);
S := Format("HeapErrorCode %d", [HeapErrorCode]);
mmoList.Lines.Add(S);
end;
MemStatus.dwLength := SizeOf(TMemoryStatus);
GlobalMemoryStatus(MemStatus);
with MemStatus do
begin
S := StringOfChar("=", MAX_LINE_SIZE);
mmoList.Lines.Add(S);
S := StringOfChar(" ", (MAX_LINE_SIZE - Length(sMemoryStatus)) div 2);
S := S+sMemoryStatus+S;
while Length(S) < MAX_LINE_SIZE do S := S + " ";
mmoList.Lines.Add(S);
S := StringOfChar("=", MAX_LINE_SIZE);
mmoList.Lines.Add(S);
S := Format("MemoryLoad %d%s", [dwMemoryLoad, sPercent]); // percent of memory in use
mmoList.Lines.Add(S);
S := Format("TotalPhys %d", [dwTotalPhys]); // bytes of physical memory
mmoList.Lines.Add(S);
S := Format("AvailPhys %d", [dwAvailPhys]); // free physical memory bytes
mmoList.Lines.Add(S);
S := Format("TotalPageFile %d", [dwTotalPageFile]);// bytes of paging file
mmoList.Lines.Add(S);
S := Format("AvailPageFile %d", [dwAvailPageFile]);// free bytes of paging file
mmoList.Lines.Add(S);
S := Format("TotalVirtual %d", [dwTotalVirtual]); // user bytes of address space
mmoList.Lines.Add(S);
S := Format("AvailVirtual %d", [dwAvailVirtual]); // free user bytes
mmoList.Lines.Add(S);
S := Format("PercentUseMem %s%s", [FloatToStr(100 - Round(dwAvailPhys/(dwTotalPhys/100))), sPercent]);
mmoList.Lines.Add(S);
S := StringOfChar("=", MAX_LINE_SIZE);
mmoList.Lines.Add(S);
end;
end;


 
paul_shmakov ©   (2002-10-15 13:56) [16]

да послушайте вы Игоря Шевченко, все он верно говорит. объем именно озу не получится определить. и не одна программа этот объем не показывает. можно лишь делать примерные заключения на основе исследования виртуального адресного пространства процесса.



Страницы: 1 вся ветка

Текущий архив: 2002.12.16;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.011 c
3-51604
Diouzshev
2002-11-26 13:29
2002.12.16
Проблемы с большим деревом


3-51639
Jurden
2002-11-28 15:51
2002.12.16
Пробелы в стринговом поле


3-51623
Bocman
2002-11-28 01:05
2002.12.16
Не работает ADOStoredProc


1-51759
greenrul
2002-12-03 19:13
2002.12.16
Стили controls ов -


4-52002
Kilin
2002-10-23 14:19
2002.12.16
Ошибка ShellExecute