|
|
|
Динамические массивы - вопрос выделения памяти. Out of memory
|
|||
|---|---|---|---|
|
#18+
Заранее кол-во файлов неизвестно. Делаю выделение памяти по 1000 элементов, потом незаполненный "хвост" обрезаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 14:16 |
|
||
|
Динамические массивы - вопрос выделения памяти. Out of memory
|
|||
|---|---|---|---|
|
#18+
wadman, Зависит от задачи, в некоторых случаях это можно с некоторой погрешностью предсказать без реального перебора данных (в данном случае файловой системы). Если предсказать в общем случае нельзя - то: а) AList.Capacity := MaxListSize; б) DoWork(AList); в) AList.Capacity := AList.Count; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 14:17 |
|
||
|
Динамические массивы - вопрос выделения памяти. Out of memory
|
|||
|---|---|---|---|
|
#18+
m52, Лучше использовать геометрическую прогрессию, например тот же TList это делает так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 14:20 |
|
||
|
Динамические массивы - вопрос выделения памяти. Out of memory
|
|||
|---|---|---|---|
|
#18+
YuRock, Было, было такое, я помню регулярные вопросы про Setlength(Arr, N+1) в цикле лет 15 назад. Понятно, что не все с этим сталкивались. А FastMM включили в состав Delphi в районе D2006, до этого был http://rsdn.org/article/Delphi/memmanager.xml (FastMM можно было подключить вручную) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 14:21 |
|
||
|
Динамические массивы - вопрос выделения памяти. Out of memory
|
|||
|---|---|---|---|
|
#18+
m52, в общем, поставь какой-нибудь мониторинг памяти вроде VMMap и смотри где у тебя возникает фрагментация. Шаманить с кодом не зная деталей обычно бесполезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 14:37 |
|
||
|
Динамические массивы - вопрос выделения памяти. Out of memory
|
|||
|---|---|---|---|
|
#18+
Спасибо за советы и обсуждения. Буду пробовать, экспериментировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 14:45 |
|
||
|
Динамические массивы - вопрос выделения памяти. Out of memory
|
|||
|---|---|---|---|
|
#18+
А в чем вообще загадка-то? 32-разрядная прога, 2 Гб лимит по общему потреблению. 2 млн записей по 1000 байт - и привет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2018, 17:10 |
|
||
|
Динамические массивы - вопрос выделения памяти. Out of memory
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Вся соль в том, что я использую динамические массивы для хранения указателей и в один прекрасный момент в куче не может найтись цельного (непрерывного) куска памяти для хранения например 2 млн указателей. Поэтому ищу способ выделения памяти не цельным куском, тогда уменьшится вероятность Out of memory. Задача именно уменьшить вероятность, а не полностью избавиться от этой ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2018, 18:00 |
|
||
|
Динамические массивы - вопрос выделения памяти. Out of memory
|
|||
|---|---|---|---|
|
#18+
08.10.2018 18:00, m52 пишет: > для хранения например 2 млн указателей. крассаучег! (С) Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2018, 18:02 |
|
||
|
Динамические массивы - вопрос выделения памяти. Out of memory
|
|||
|---|---|---|---|
|
#18+
m52, Вся соль в том, что пример 21692228 показывает, что динамический массив увеличивает свою длину 63 миллиона раз вплоть до размера в гигабайт, и это работает. Поэтому ещё раз рекомендую показать свой драгоценный код (минимальный воспроизводимый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2018, 19:33 |
|
||
|
Динамические массивы - вопрос выделения памяти. Out of memory
|
|||
|---|---|---|---|
|
#18+
m52Здравствуйте, Вся соль в том, что я использую динамические массивы для хранения указателей и в один прекрасный момент в куче не может найтись цельного (непрерывного) куска памяти для хранения например 2 млн указателей. Поэтому ищу способ выделения памяти не цельным куском, тогда уменьшится вероятность Out of memory. Задача именно уменьшить вероятность, а не полностью избавиться от этой ошибки. А откуда ты знаешь, что OOM именно от нехватки цельного куска размером 2М*4б = 8Мб? Попробуй не выделять память под записи, а просто добавлять в массив нулевые указатели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2018, 09:44 |
|
||
|
Динамические массивы - вопрос выделения памяти. Out of memory
|
|||
|---|---|---|---|
|
#18+
m52, А винда не 32-битная ли случайно? Если да - то сколько суммарно памяти свободной остается для всех прог? Может, её кто-то съел уже всю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2018, 11:56 |
|
||
|
Динамические массивы - вопрос выделения памяти. Out of memory
|
|||
|---|---|---|---|
|
#18+
09.10.2018 11:56, YuRock пишет: > > А винда не 32-битная ли случайно? > Если да - то сколько суммарно памяти свободной остается для всех прог? не имеет значения. если конечно поциент не выключил своп. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2018, 12:02 |
|
||
|
Динамические массивы - вопрос выделения памяти. Out of memory
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий09.10.2018 11:56, YuRock пишет: > > А винда не 32-битная ли случайно? > Если да - то сколько суммарно памяти свободной остается для всех прог? не имеет значения. если конечно поциент не выключил своп.А, ну да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2018, 13:28 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39711679&tid=2040306]: |
0ms |
get settings: |
12ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
192ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 534ms |

| 0 / 0 |
