Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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.87 MB
Время: 0.141 c
14-51895
SPeller
2002-11-22 02:23
2002.12.16
Глюк....


1-51775
DVM
2002-12-02 17:05
2002.12.16
Как открыть OpenDialog в нужном месте экрана? Что-то я торможу.


1-51742
Smouk
2002-12-06 14:24
2002.12.16
Срочно нужна помощь с Delphi !!!


1-51766
Оля
2002-12-04 17:24
2002.12.16
Трабла с FormCreate


7-51980
RUS1
2002-10-16 11:05
2002.12.16
Запускаем процесс...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский