![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 гигов ты не возьмешь, скока на диске бы не было. Фактически, и два гига не выделишь, там ведь еще твой ехе, все библиотеки и тд...