Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Out of memory [D6, Win2k]


Геннадий ©   (2004-11-02 10:55:00) 

Смоделируем ситуацию:

var
 St: String;
 I : Integer;
begin
 St:= '';
 for I:=Low(I) to High(I) do St:= St + ':)';
end;


Получаем Out of memory. Но ведь есть файл подкачки. Если не хватает оперативной памяти, данные сбрасываются на диск. Если не хватает места в файле-подкачке, он динамически расширяется (или можно выставить очень большой его размер в свойствах ОС). Так в чём проблема? Проясните ситуацию, пожалуйста!


Digitman   (2004-11-02 11:08:00) [1]


> Геннадий   (02.11.04 10:55)  


дело не в файле подкачки

ВАП процесса состоит из регионов.. каждый из регионов состоит из блока смежных страниц и имеет атрибуты "свободности"/"занятости" (упрощенно) .. "региональное" состояние ВАП меняется динамически, с каждым вызовом WinAPI-ф-ций распределения/перераспределения/освобождения вирт.памяти

в пределе ты требуешь распределения памяти размером даже более 4Гб, такого "свободного" региона в ВАП Win32-процесса нет и быть не может, поэтому ты и получаешь OOM-отказ


Romkin   (2004-11-02 11:00:00) [2]

Проблема во фрагментации памяти. Эт во-первых. Во-вторых, больше 2 гигов ты не возьмешь, скока на диске бы не было. Фактически, и два гига не выделишь, там ведь еще твой ехе, все библиотеки и тд...


Наверх

Титульная страница Поиск, карта сайта Написать письмо