Форум: "Система";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];
ВнизРазмер занимаемой приложением памяти. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.009 c