Форум: "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