powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / SafeArray выделение памяти и ее возврат системе
2 сообщений из 2, страница 1 из 1
SafeArray выделение памяти и ее возврат системе
    #39880740
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, кто-нибудь знает что это такое?

Windows 10
До выполнения выделено памяти 7 Мб
После выполнения 10 Мб
Пик выделения 99 Мб

Куда захавало 3 Мб. Причем, если выполнить несколько/много раз, то больше 3-4 Мб не поднимается.
Также заметил, что если долго ничего не делать, память вернулась обратно до 7 Мб (Долго это около часа)

Windows 7 - хавает примерно 600 Кб

Суть: Есть сервис, работает с OLE приложением. Пихает в него большие вариантные массивы созданные через VarArrayCreate. Пик памяти до 5 Гб доходит, когда в очереди накапливается много массивов.
После такого прохода, остается висеть около 250 Мб. Если запустить процесс еще несколько раз, останутся те же 250 Мб. И пик будет тот же.
Грешил на обертку Delphi, но вижу что прямой вызов ведет также.

Теоретически, все равно сколько памяти сожрало и не отдало, ее много и не жалко, но хочется понимать модель поведения...

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
procedure TForm1.Button1Click(Sender: TObject);
var
  List: TArray<PSafeArray>;
  k: Int32;
  Bound: packed array[0..1] of SAFEARRAYBOUND;
begin
  Bound[0].cElements := 1000;
  Bound[0].lLbound := 0;
  Bound[1].cElements := 10;
  Bound[1].lLbound := 0;
  SetLength(List, 500);
  for k := 1 to 500 do
  begin
    List[k - 1] := SafeArrayCreate(VT_VARIANT, 2, @Bound);
  end;

  for k := 1 to 500 do
    SafeArrayDestroy(List[k - 1]);
end;
...
Рейтинг: 0 / 0
SafeArray выделение памяти и ее возврат системе
    #39880775
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Citeзаметил, что если долго ничего не делать, память вернулась обратнопоигралось и отпустило
X-Citeхочется понимать модель поведениямодель поведения виндового системного аллокатора можно просто принять и простить, оно от версий и редакций всяко разно умеет
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / SafeArray выделение памяти и ее возврат системе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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