Имя: Пароль:
1C
1C 7.7
v7: Объект "Таблица" при закрытии не выгружается из ОЗУ процесса
, ,
0 AlexS1C
 
07.05.13
15:27
Тестировал отчеты на больших данных! Обработка формирует отчет! Объект "Таблица" переменная уровня процедуры где заполняется она! Но после закрытия самой таблицы или даже самой обработки память не освобождается! К примеру с 60 мб выросла до 300 мб! После закрытия обработки и самой таблицы, выгрузится по мелочи каких 15 мб и все 285 остается висеть! Кто что знает про эту проблему?
1 mikecool
 
07.05.13
15:29
Столько восклицательных знаков!
проблема - мусорщик когда надо, тогда и сработает
2 ДенисЧ
 
07.05.13
15:30
Фича.
(1) в данном случае не сработает до закрытия 1с
3 fmrlex
 
07.05.13
15:31
Ну кстати да. Стратегия работы с памятью. Причем не самая плохая реализация.
4 mikecool
 
07.05.13
15:32
и чего бы не дать деструкторы для объектов?
5 ДенисЧ
 
07.05.13
15:32
(4) Может, тебе ещё инсерт/апдейт груповой дать? :-)
6 AlexS1C
 
07.05.13
15:34
Т.е. я так понял это нельзя победить?
7 mikecool
 
07.05.13
15:34
(5) да я и сам возьму )))
8 Chum
 
07.05.13
15:41
(6) Семерка же. Она еще заставляет скуль память не отпускать.

А вообще, иногда помогают такие фишки, как фиксированная высота строки таблицы или обнуление объектов после использования, например, Таблица = 0;
9 Torquader
 
09.05.13
00:25
Просто нужно для отчёта создавать переменную в модуле и использовать повторно, если отчёт обновляется.
Также полезно перед удалением таблицы сделать удаление строк.
10 Cthulhu
 
09.05.13
12:08
да не надо истерить.
нормально таблича очищает память при переназначении (присвоении переменной нуля или пустой строки, например).
просто 1с-ина, забрав у системы эту память, не отдает её обратно, а продолжает использовать для размещения других своих объектов.
11 Cthulhu
 
09.05.13
12:09
(10)+: а, да, возможно в контексте только этой формы. переоткрытие формы тогда помогает.