powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Динамические массивы - вопрос выделения памяти. Out of memory
14 сообщений из 39, страница 2 из 2
Динамические массивы - вопрос выделения памяти. Out of memory
    #39711679
m52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заранее кол-во файлов неизвестно.
Делаю выделение памяти по 1000 элементов, потом незаполненный "хвост" обрезаю.
...
Рейтинг: 0 / 0
Динамические массивы - вопрос выделения памяти. Out of memory
    #39711682
delphinotes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman,

Зависит от задачи, в некоторых случаях это можно с некоторой погрешностью предсказать без реального перебора данных (в данном случае файловой системы).
Если предсказать в общем случае нельзя - то:
а) AList.Capacity := MaxListSize;
б) DoWork(AList);
в) AList.Capacity := AList.Count;
...
Рейтинг: 0 / 0
Динамические массивы - вопрос выделения памяти. Out of memory
    #39711687
delphinotes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
m52,

Лучше использовать геометрическую прогрессию, например тот же TList это делает так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
procedure TList.Grow;
var
  Delta: Integer;
begin
  if FCapacity > 64 then
    Delta := FCapacity div 4
  else
    if FCapacity > 8 then
      Delta := 16
    else
      Delta := 4;
  SetCapacity(FCapacity + Delta);
end;
...
Рейтинг: 0 / 0
Динамические массивы - вопрос выделения памяти. Out of memory
    #39711689
MBo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBo
Гость
YuRock,

Было, было такое, я помню регулярные вопросы про Setlength(Arr, N+1) в цикле лет 15 назад.
Понятно, что не все с этим сталкивались.

А FastMM включили в состав Delphi в районе D2006, до этого был http://rsdn.org/article/Delphi/memmanager.xml (FastMM можно было подключить вручную)
...
Рейтинг: 0 / 0
Динамические массивы - вопрос выделения памяти. Out of memory
    #39711705
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m52,
в общем, поставь какой-нибудь мониторинг памяти вроде VMMap и смотри где у тебя возникает фрагментация. Шаманить с кодом не зная деталей обычно бесполезно.
...
Рейтинг: 0 / 0
Динамические массивы - вопрос выделения памяти. Out of memory
    #39711715
m52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за советы и обсуждения.
Буду пробовать, экспериментировать.
...
Рейтинг: 0 / 0
Динамические массивы - вопрос выделения памяти. Out of memory
    #39714577
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чем вообще загадка-то? 32-разрядная прога, 2 Гб лимит по общему потреблению. 2 млн записей по 1000 байт - и привет.
...
Рейтинг: 0 / 0
Динамические массивы - вопрос выделения памяти. Out of memory
    #39714601
m52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте,

Вся соль в том, что я использую динамические массивы для хранения указателей и в один прекрасный момент в куче не может найтись цельного (непрерывного) куска памяти для хранения например 2 млн указателей. Поэтому ищу способ выделения памяти не цельным куском, тогда уменьшится вероятность Out of memory. Задача именно уменьшить вероятность, а не полностью избавиться от этой ошибки.
...
Рейтинг: 0 / 0
Динамические массивы - вопрос выделения памяти. Out of memory
    #39714604
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
08.10.2018 18:00, m52 пишет:
> для хранения например 2 млн указателей.

крассаучег! (С)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Динамические массивы - вопрос выделения памяти. Out of memory
    #39714652
MBo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBo
Гость
m52,

Вся соль в том, что пример 21692228 показывает, что динамический массив увеличивает свою длину 63 миллиона раз вплоть до размера в гигабайт, и это работает.

Поэтому ещё раз рекомендую показать свой драгоценный код (минимальный воспроизводимый)
...
Рейтинг: 0 / 0
Динамические массивы - вопрос выделения памяти. Out of memory
    #39714772
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m52Здравствуйте,

Вся соль в том, что я использую динамические массивы для хранения указателей и в один прекрасный момент в куче не может найтись цельного (непрерывного) куска памяти для хранения например 2 млн указателей. Поэтому ищу способ выделения памяти не цельным куском, тогда уменьшится вероятность Out of memory. Задача именно уменьшить вероятность, а не полностью избавиться от этой ошибки.
А откуда ты знаешь, что OOM именно от нехватки цельного куска размером 2М*4б = 8Мб? Попробуй не выделять память под записи, а просто добавлять в массив нулевые указатели.
...
Рейтинг: 0 / 0
Динамические массивы - вопрос выделения памяти. Out of memory
    #39714838
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m52,

А винда не 32-битная ли случайно? Если да - то сколько суммарно памяти свободной остается для всех прог? Может, её кто-то съел уже всю.
...
Рейтинг: 0 / 0
Динамические массивы - вопрос выделения памяти. Out of memory
    #39714842
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
09.10.2018 11:56, YuRock пишет:
>
> А винда не 32-битная ли случайно?
> Если да - то сколько суммарно памяти свободной остается для всех прог?

не имеет значения.
если конечно поциент не выключил своп.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Динамические массивы - вопрос выделения памяти. Out of memory
    #39714889
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий09.10.2018 11:56, YuRock пишет:
>
> А винда не 32-битная ли случайно?
> Если да - то сколько суммарно памяти свободной остается для всех прог?

не имеет значения.
если конечно поциент не выключил своп.А, ну да.
...
Рейтинг: 0 / 0
14 сообщений из 39, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Динамические массивы - вопрос выделения памяти. Out of memory
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]