Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.10.31;
Скачать: [xml.tar.bz2];

Вниз

Каким макаром можно   Найти похожие ветки 

 
MJH   (2002-09-15 06:07) [0]

сабж долезть до размера занимаемой процессом памяти ?
GetProcessWorkingSetSize выдает 2 константы, причем ни одна из них не имеет отношения к реально занимаемой памяти...


 
MJH   (2002-09-17 00:53) [1]

Как всегда никто не вкурсе/никто не имел дела...обидно... :(



 
MJH   (2002-09-18 14:19) [2]

ну?


 
Digitman   (2002-09-18 14:26) [3]

см. VirtualQueryEx()


 
MJH   (2002-09-18 17:04) [4]

толи лыжи не едут....толи...
что там должно быть во втором прараметре? ссылка на базовый адрес страниц чего?


 
Yegor Derevenets   (2002-09-18 17:39) [5]

Я тоже заинтересовался VirtualQuryEx. Но у меня всегда одно и тоже выдает на разных прогах. Мастера, не могли бы вы пояснить, как ею пользоваться?


 
Digitman   (2002-09-18 17:40) [6]

конечно, лыжи !)

Второй параметр - некий адрес в ВАП целевого процесса
При успешном возврате из ф-ции структура TMemoryBasicInformation будет содержать инф-цию о статусе блока странично-организованной вирт.памяти целевого процесса, диапазону адресов которого принадлежит адрес, указываемый 2-м параметром


 
MJH   (2002-09-19 02:02) [7]

и как этот адрес получить?
в хелпе то сказано - используя GetSystemInfo, но я максиумм получал 4096 в размере региона в TMemoryBasicInformation


 
Digitman   (2002-09-19 10:34) [8]

данный код сканирует ВАП тек.процесса :

procedure TForm1.Button5Click(Sender: TObject);
var
mbi: TMemoryBasicInformation;
pRegion: Pointer;
s, r_type, r_state: string;
total_mapped,
total_image,
total_private,
total_commited,
total_reserved,
total_free: DWord;
begin
pRegion := nil;

total_mapped := 0;
total_image := 0;
total_private := 0;
total_free := 0;
total_reserved := 0;
total_commited := 0;
while VirtualQuery(pRegion, mbi, sizeof(mbi)) = sizeof(mbi) do
begin
with mbi do
begin
case Type_9 of
MEM_IMAGE:
begin
r_type := "MEM_IMAGE";
Inc(total_image, RegionSize);
end;
MEM_PRIVATE:
begin
r_type := "MEM_PRIVATE";
Inc(total_private, RegionSize);
end;
MEM_MAPPED:
begin
r_type := "MEM_MAPPED";
Inc(total_mapped, RegionSize);
end;
else
r_type := "UNKNOWN";
end;
case State of
MEM_COMMIT:
begin
r_state := "MEM_COMMIT";
Inc(total_commited, RegionSize);
end;
MEM_FREE:
begin
r_state := "MEM_FREE";
Inc(total_free, RegionSize);
end;
MEM_RESERVE:
begin
r_state := "MEM_RESERVE";
Inc(total_reserved, RegionSize);
end;
else
r_state := "UNKNOWN";
end;
s := "BaseAddress : " + IntToHex(DWord(BaseAddress), 8) + #10 +
"AllocationBase : " + IntToHex(DWord(AllocationBase), 8) + #10 +
"RegionSize; : " + IntToHex(RegionSize, 8) + #10 +
"Type : " + r_type + #10 +
"State : " + r_state;
// showmessage(s);
Inc(pRegion, RegionSize);
end;
end;
s := "Total commited size : " + IntToStr(total_commited div 1024) + " kb"#10 +
"Total reserved size : " + IntToStr(total_reserved div 1024) + " kb"#10 +
"Total free size : " + IntToStr(total_free div 1024) + " kb"#10 +
"Total mapped size : " + IntToStr(total_mapped div 1024) + " kb"#10 +
"Total private size : " + IntToStr(total_private div 1024 ) + " kb"#10 +
"Total image size : " + IntToStr(total_image div 1024) + " kb";
ShowMessage(s);

end;



 
MJH   (2002-09-19 10:52) [9]

мдя....а через GetProcessMemoryInfo всего три строчки....


 
Digitman   (2002-09-19 12:15) [10]


> долезть до размера занимаемой процессом памяти


Какой памяти ?
Размер какой памяти ты получаешь через GetProcessMemoryInfo всего три строчки ?




 
MJH   (2002-09-19 12:20) [11]

запусти таскменеджер - посмотришь...


 
Digitman   (2002-09-19 12:29) [12]

да я-то вижу) ...
а вот ты-то что там видишь ? С какими полями структуры, возвращаемой некоей ф-цией GetProcessMemoryInfo, ты сопоставляешь поля, показываемые taskmanager"ом для параметров "памяти" процесса ?


 
MJH   (2002-09-19 14:04) [13]

WorkingSetSize


 
Digitman   (2002-09-19 14:21) [14]

И что, ты не в состоянии был произнести это страшное слово сразу - "физическая память, в данный момент видимая (доступная) процессу" ?

The "working set" of a process is the set of memory pages currently visible to the process in physical RAM memory. These pages are resident and available for an application to use without triggering a page fault. The size of a process" working set is specified in bytes. The minimum and maximum working set sizes affect the virtual memory paging behavior of a process.

А зачем это тебе вообще ? Что тебя так заботит физ.память ? Мало ли как система распределит ее ! Во многих случая гораздо важней состояние виртуальной, а не физической памяти ....

imho, совершенно бестолковая эта инф-ция, никакого практического смысла не имеющаая.... система вольна рапорягаться и распорягается "выдавать и отбирать" физ.память у процессов так и тогда, как и когда она сочтет это нужным. Контролировать этот процесс на высоком уровне (уровне станд.библиотек OP) ты все равно не имеешь возможности.


 
MJH   (2002-09-19 15:45) [15]


И что, ты не в состоянии был произнести это страшное слово сразу - "физическая память, в данный момент видимая (доступная) процессу" ?

а ты что подумал под "размер занимаемой памяти"?

А зачем это тебе вообще ? Что тебя так заботит физ.память ?

да вот прикинь....винамп3 сколько весит в памяти? прально, 25 мегов. Найтро0.74 сколько весит в памяти? мегов до 10-15, но это дело исправлаяемо, можно сбросить до 2-3 мегов..в главном меню есть пункт "сбросить занимаемую память"...в версии А будет автоматический регулятор занимаемой памяти (уже протестирован и испытан)...зачем ради прослушивания мп3 тратить 15-25 мегабайт, если можно обойтись 5-6 (причем стабильно)?


 
Digitman   (2002-09-19 16:01) [16]


> а ты что подумал под "размер занимаемой памяти


Да все что угодно, но только не физической. В дан.случае я вел речь о вирт.памяти. И ты это прекрасно видел по упору на VirtualQuery(), однако продолжал играть в молчанку.

> винамп3 сколько весит в памяти?

Понятия не имею. Не заботил и не заботит меня этот вопрос. И опять же - в какой памяти ??

> Найтро0.74 сколько весит в памяти?

Знать не знаю , чего это такое - Найтро0.74.
Обычное приложение, надо понимать ?

> но это дело исправлаяемо, можно сбросить до 2-3 мегов..

Не занимай ее, физ.память, без нужды, запрашивая страницы вирт.памяти с признаком невытесняемых - и исправлять ничего не нужно будет)

> главном меню есть пункт "сбросить занимаемую память"...в

Да мало ли там чего понаворочено)...

> версии А будет автоматический регулятор занимаемой памяти
Да хоть чего там понаделай ! говорю же : контролируй параметры выделения вирт.памяти (тип, статус) - и заботы такой не будет)


 
MJH   (2002-09-19 18:33) [17]

И опять же - в какой памяти ??
ОПЕРАТИВНОЙ, не в кэше камушка это точно

Знать не знаю , чего это такое - Найтро0.74.
Обычное приложение, надо понимать ?

http://nitroamp.ru

Не занимай ее, физ.память, без нужды, запрашивая страницы вирт.памяти с признаком невытесняемых - и исправлять ничего не нужно будет)

гениально....занимает ее винда, и не освобождает...

говорю же : контролируй параметры выделения вирт.памяти (тип, статус) - и заботы такой не будет)

вот смотри: вызывается формочка с кучей компонент, сразу бах и 5 мег как не бывало. и как это контролировать?




 
Digitman   (2002-09-20 08:35) [18]

>>ОПЕРАТИВНОЙ, не в кэше камушка это точно

так ведь есть еще и файл подкачки ! это тоже - память. файл подкачки имеет непосредственное отношение к механизму распределения ВИРТУАЛЬНОЙ памяти. И в файле подкачки процесс тоже чего-то "весит" !


> гениально....занимает ее винда, и не освобождает...


Да какое тебе до этого дело-то ? Ну никак я не пойму) ...
Ну заняла ее винда, ну и что ? Надо ей будет, она отберет у тебя эту память и выкинет соотв.страницы вирт.памяти твоего процесса в файл подкачки, пометив их как вытесненные. А когда понадобятся они твоему процессу снова, процесс обратится к соотв.вирт.странице, произойдет PAGE_FAULT, винда найдет для тебя нужный фрагмент физ.памяти (возможно, отобрав ее тем же самым способом у другого процесса), загрузит в нее то, что было перед этим вытеснено в файл подкачки и - ву а ля ! Какие проблемы-то ? Объясни)...


> вот смотри: вызывается формочка с кучей компонент, сразу
> бах и 5 мег как не бывало. и как это контролировать?


Да какое тебе дело-то до этого ? Ты что, "жить" другим процессам мешаешь тем самым ?


 
MJH   (2002-09-20 10:54) [19]

>Да какое тебе дело-то до этого ?
большое и толстое....другого ответа просто не нашел я.
спросил - ответил, так ты гестаповца из себя стоишь :)


 
Digitman   (2002-09-20 11:17) [20]

>MJH

Да как тебе будет угодно, сударь)

Скажу лишь, что пытался помочь тебе разобраться в общесистемных вопросах, а заодно и любопытство удовлетворить : как так можно - назойливо рекламировать везде и всюду очередную мультимедийную поделку а ля "Найтроамп" (с претензиями на некую эффективность и новизну технологий) и при этом задавать вопросы, вызывающие большие сомнения в профессионализме разработчика


 
MJH   (2002-09-20 17:36) [21]

2Digitman
спасибо, что напомнил что есть файл подкачки

как так можно - назойливо рекламировать везде и всюду очередную мультимедийную поделку а ля "Найтроамп" (с претензиями на некую эффективность и новизну технологий) и при этом задавать вопросы, вызывающие большие сомнения в профессионализме разработчика

по твоему спросить то, чем никогда не работал(ну не определял я раньше размер физической памяти занятой процессом!) - это быть полным чайником? гни пальцы поменьше...окружающие будут относиться лучше...и еще раз: это не твое дело что и где я рекламирую. рекламирую - значит надо.


 
Digitman   (2002-09-20 18:24) [22]

>MJH

Да не не кипятись ты, парень) ...
Я ведь внимательно наблюдал за твоей дискуссией с <Jeer>)...
И "полным чайником" тебя не называю - это ты зря, не было такого ! Это твои домыслы - и не более того.
А вот то, что тебе не хватает теор.знаний - это факт. Их, кстати, мало кому хватает, и я - не исключение.
Поэтому прекрати со своей стороны, как изволил выразиться, "гнуть пальцы" и реагируй на вопросы спокойно. И я с удовольствием поделюсь с тобой имеющимися у меня знаниями, если они действительно нужны тебе. Возможно, это позволит тебе отказаться от неверно выбранного пути. Или наоборот - утвердиться в выбранном. На то и форум !

А вот реклама эта ... ну не место для нее здесь, уверяю тебя !


 
MJH   (2002-09-20 19:22) [23]

мне твой тон не очень понравился...поэтому так и ответил...
я ж спросил и не более...верно?
а ты после ответа стал не понять к чему прикапываться....будто я не знаю про виртуальную память...зря ты так подумал...



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

Форум: "WinAPI";
Текущий архив: 2002.10.31;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.027 c
14-101477
Anatoly Podgoretsky
2002-10-05 18:39
2002.10.31
Кто самый молодой и самый старый


1-101307
Apay
2002-10-19 17:49
2002.10.31
Bitmap ->Grayscale


1-101353
()utLaw
2002-10-20 00:00
2002.10.31
Запуск и завершение программы принудительно.


1-101317
race1
2002-10-20 05:36
2002.10.31
memory


6-101432
Kotik
2002-08-27 01:51
2002.10.31
Как узнать стоит ли на компе какой нибудь FireWall?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский