Тема: Расход памяти

Нашел утечку памяти при которой макрос вылетает в ошибку <B>Out of memory</B>.
Если в цикле вызывать процедуру или функцию из другого модуля, то происходит большой расход памяти.

Можно убедиться на примере:
создадим модуль uTestMem с процедурой TstMem
sub TstMem
end sub

в другом модуле выполняем цикл
do while i < 1000000
   call uTestMem.TstMem
   i = i + 1
loop
после завершения данного цикла диспетчер задач Windows показывает увеличение памяти программы TechnologiCS примерно на 100Мб

Если все вызываемые в цикле процедуры и функции будут находится в том же модуле, что и цикл, то утечки памяти нет.

TechnologiCS 7.9.0.0(39705)
Windows 10 Pro (10.0.16299.1029)

Re: Расход памяти

Это лог растет. Он в памяти лежит. Посмотреть можно в здесь https://help.technologics.ru/7.9/TCSHelp/_779.htm

Re: Расход памяти

Олег Зырянов пишет:

Это лог растет. Он в памяти лежит. Посмотреть можно в здесь https://help.technologics.ru/7.9/TCSHelp/_779.htm

Как программно отключить Log?

(изменено: , 2 февраля 2024 11:22:41)

Re: Расход памяти

https://help.technologics.ru/7.9/TCSAPI … ext_13.htm

Глобальный объект LogOject https://help.technologics.ru/7.9/TCSHelp/_762.htm

Re: Расход памяти

Как отключить log программно, чтобы во время выполнения макроса log не велся?
А лучше отключить его в принципе, чтобы при запуске TCS у пользователей никакого лога работы макросов не велось.
Не вызывать же LogObject.ClearLog в каждой итерации цикла

Re: Расход памяти

Системный никак. Подумаем. Лог, если не ошибаюсь, вкладывается в сообщение разработчику, если у пользователя возникла ошибка.

Ну и так понимаю он при запуске нового макроса чистится автоматически, так что не сильно влиять должен.

Re: Расход памяти

Олег Зырянов пишет:

Системный никак. Подумаем. Лог, если не ошибаюсь, вкладывается в сообщение разработчику, если у пользователя возникла ошибка.

Ну и так понимаю он при запуске нового макроса чистится автоматически, так что не сильно влиять должен.

У нас есть макросы, которые запускаются раз в месяц и работают всю ночь, обрабатывая огромное количество информации. Естественно в циклах выполняются много функций из других модулей. Такие макросы и могут вылетать в ошибку. Сейчас перед запуском тяжелого макроса мы закрываем все вкладки, выбираем профиль на 1 сутки с минимумом информации (цех который практически не создает никаких документов) и перезапускаем TCS.
Возможно полное отключение log решит проблему и тяжелые макросы перестанут вылетать в out of memory

Re: Расход памяти

Чаще вот это конечно влияет https://forum.technologics.ru/post15111.html#p15111
Там же есть простые способы ускорения https://forum.technologics.ru/post7541.html#p7541

С логом впервые слышу, но теоретически возможно конечно. Добавим отключение и просто максимальный размер.

Ну и у нас ошибки конечно могут быть. По АПИ постоянно оптимизируем.

Насколько понимаю у вас скорее проблемы с большим кол-вом данных в наборе? С этим уже сложнее.
У нас скоро будет обновление, которое сильно ускорит работу и значительно снизит потребление памяти, но над этим еще работаем.