TDictionary
использует внутренний массив, который удваивается, если он заполнен:
newCap := Length(FItems) * 2;
if newCap = 0 then
newCap := 4;
Rehash(newCap);
Это хорошо работает со средним количеством элементов, но если доходит до верхний предел это очень неудачно, потому что он может вызвать исключение EOutOfMemory
, даже если почти половина памяти все еще доступна.
Есть ли способ повлиять на это поведение? Как другие классы коллекций справляются с этим сценарием?