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

Вниз

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

 
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 вся ветка

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

Наверх




Память: 0.54 MB
Время: 0.011 c
1-101316
Le!
2002-10-14 08:26
2002.10.31
Надпись на кнопке.


1-101277
Pegas
2002-10-22 14:26
2002.10.31
Вопрос по DLL


3-101119
User0
2002-10-04 19:30
2002.10.31
HELP! Как сделать чтоб IB база данных понимала кириллицу ??


14-101488
Николай Быков
2002-10-11 18:25
2002.10.31
Простите мен за всё...


3-101135
Kurt
2002-10-10 11:36
2002.10.31
Как передавать параметры в ADOQuery если несколько параметров в з