Провел эксперимент на маленькой тестовой программе: в цикле создаются приостановленные потоки (Thread'ы), затем удаляются, а несколько Мб не освобождается.
По клику на первую кнопку:
- Код: Выделить всё
for i := 0 to 999 do
thr[i] := TThread1.Create(true);
По клику на вторую
- Код: Выделить всё
for i := 0 to 999 do begin
thr[i].Free;
end;
в процедуре выполнения потока просто стоит a := 1 , он все равно приостановленным создается.
Открываю диспетчер и смотрю - по умолчанию прога занимает 5-6 мб в оперативке, нажимаю на первую кнопку, размер вырастает до 28 мб, нажимаю на вторую - падает до 12 мб. Затем с последующими разами объем стабильно возрастает на 2-3 мб.
Посоветуйте как корректно освобождать память в данном случае?