Re: Проблема с памятью

Неизвестно по кааким причинам, но у многих клиентских машин, в процессе работы виснит вся система. Отчего это может быть? Оператива на них - 512. Иногда пишет ошибку Out of system resurse... Смотрел состояние системы: оперативы используется - ~300Мб (еще 200 свободно), проц - 50% -постоянно. Хотябы идею предложите из-за чего это может быть.

Re: Проблема с памятью

Подробней пожалуйста. Версия клиента, операционная система, какие действия совершаются пользователем.

Re: Проблема с памятью

4.7.1, Windows XP SP2, Макросы... (скорее всего причина в них, но где копать???). Макрос создает РД, состояния, УД, Уч карточки. Влияют ли периоды объектов РД, УД как-то на все это дело? Хотя они всего в один год. Все объекты TCSApp создаются с уник именами и удаляются TCSApp.DeleteModuleByUserModuleName(), что не может тратить оперативу, или не ее, но система все-равно виснет.

Re: Проблема с памятью

Ну предложите хоть что-нибудь

Re: Проблема с памятью

Информации мало, можно ли код макросов увидеть?

Re: Проблема с памятью

Ребята, даже не парьтесь, концов не найдете...  8) 


Станислав писал(а):
Смотрел состояние системы:...  ...проц - 50% -постоянно.


Вот точно такое же было в моей практике. Только не на большом количестве компьютеров, а на одном из 80  :!:  Чего только не делали, куда только не смотрели - всё бестолку  :( Вроде ничего криминального не установлено, аппаратная часть ещё у 15-ти соседних компов, как у близнецов, такая же и всё работает в тех же режимах без сучка и задоринки (и макросы те же). Правда, внутрь не заглядывал - корпус опечатан был. Очень, конечно, руки чесались операционку переставить, но хозяин уж какой-то инерционный был. В итоге забили, потому что пользователь не ключевой был, а так, в архивчик иногда посмотреть, подпись поставить и т.п.
Может, Станислав, операционку переставите, вдруг поможет? А то проблемка-то, нерешенная, так и висит (у меня теперь уже в памяти  :? ), ночами не сплю...  :wink:

Re: Проблема с памятью

А могут ли как-то отчеты влиять на все это дело, и если нет, то все-равно такой вопрос:
В отчетах к объектам TCSApp (в модуле Access) не присваиваются уникальные имена и они не освобождаются при присвоении им Nothing. Освобождается ли память после завершения формирования отчета, когда Access закроется и откроется Excel или память остается висеть пока не закроется сам клиент ТКС из которого был запущен отчет. Коннект к ТКС в отчете происходит под другим пользователем, не под тем, который сидит на клиенте - это я так на всякий случай.

Re: Проблема с памятью

Станислав писал(а):
А могут ли как-то отчеты влиять на все это дело, и если нет, то все-равно такой вопрос:
В отчетах к объектам TCSApp (в модуле Access) не присваиваются уникальные имена и они не освобождаются при присвоении им Nothing. Освобождается ли память после завершения формирования отчета, когда Access закроется и откроется Excel или память остается висеть пока не закроется сам клиент ТКС из которого был запущен отчет. Коннект к ТКС в отчете происходит под другим пользователем, не под тем, который сидит на клиенте - это я так на всякий случай.

Ух ты  :D , действительно, на всякий случай ;)
По-моему, всё это совершенно не важно. Если я ошибаюсь, то пусть меня поправят. Access закрывается, и вся память, занятая им и в том числе объектами TechnologiCS, созданными из-под него, освобождается. Другое дело, что когда данных в отчёте будет слишком много, то отчёт может не сформироваться из-за нехватки памяти как раз. Но это опять же, если у Вас объекты создаются не разово, а в цикле (для каждой записи).

Надо бы Вам поэкспериментировать на тех машинах, у которых система не виснет, запуская те же самые макросы и отчёты. Если всё чисто, то тут Ваши решения не при чём. По крайне мере в моем случае было именно так.

Re: Проблема с памятью

Бобов писал(а):
Access закрывается, и вся память, занятая им и в том числе объектами TechnologiCS, созданными из-под него, освобождается.

Это в том случае, если запущен он как самостоятельное приложение (например из приводника), а не из другой программы как библиотека (например из TechnologiCS).

Re: Проблема с памятью

То есть я правильно вас понял (Сергей) - не освобождается, если я генерирую из отчет TechnologiCS, минуя Access в Excel, даже если коннектюсь в функции Access под другим пользователем (это наверное не важно, но тем не менее)? То есть если они там понаделают отчетов штук 20, не закрывая ТКС, то у них может начать виснуть система? И чтобы освободить память, нужно перезайти в ТКС (не интересный вариант) или переписать макросы в наборе Access на присвоение объектам уникальные имена (более правильный вариант)?

Re: Проблема с памятью

Станислав писал(а):
переписать макросы в наборе Access (более правильный вариант)

хотя "переписать" это очень громко сказано!

Re: Проблема с памятью

А вообще в таком случае что "съедают" объекты - оперативную ли память? Ведь есть такое свойство (заметил экспериментируя), если свернуть клиент ТКС, то приложение будет "есть" порядка 1Мб. Это я не про отчеты сейчас, а про макросы, которые запускаются в ТКС.

Re: Проблема с памятью

Сергей Девятериков писал(а):

Бобов писал(а):
Access закрывается, и вся память, занятая им и в том числе объектами TechnologiCS, созданными из-под него, освобождается.

Это в том случае, если запущен он как самостоятельное приложение (например из приводника), а не из другой программы как библиотека (например из TechnologiCS).

Может быть и так, но в данном случае это здесь абсолютно ни при чём  :)  . Я так понимаю, Станислав при формировании отчёта добывает нужные дополнительные данные через АПИ. Какой там "Access из TechnologiCS"  :D 

В момент выливания данных из TechnologiCS в mdb компоненты Access используются, но :!: пользовательские функции из программных модулей базы Access можно использовать только во время построения отчёта  :!: 
А в этот момент компоненты Access используются уже репортером, который в свою очередь создается и запускается в макросе Excel (Start, Report). Работа макроса Excel совершенно независима от TechnologiCS. Может быть память занимается на время пока работает данный экземпляр Excel  :roll:  (а не Access как я ранее писал), но вот родство с самим TechnologiCS трудновато представить  :? т.к. он уже здесь совершенно ни при чём.

Re: Проблема с памятью

Станислав писал(а):
...генерирую из отчет TechnologiCS, минуя Access в Excel...


ну, Access Вы минуете, только если будете использовать устаревшие типы Наборов данных, которые использовать не рекомендуется.


Станислав писал(а):
...То есть если они там понаделают отчетов штук 20, не закрывая ТКС, то у них может начать виснуть система? И чтобы освободить память, нужно перезайти в ТКС...


Если они там понаделают отчётов штук 20  :wink: и при этом не будут закрывать экземпляры Excel, то возможно и повиснут. А если последовательно: построил отчёт, посмотрел, распечатал/не распечатал, закрыл Excel... то хоть 150 раз строй свои отчёты - TechnologiCS перезапускать не надо.

Re: Проблема с памятью

Чего-то вы оба - разработчика друг другу противоречите, даже и не знаю, кому поверить... :oops: 
P.S. Ответьте плиз на вопрос выше: что же занимают объекты, почему при сворачивании ТКС оперативная память освобождается.
P.P.S. Как много занимает памяти объект TCSApp.Nomenclatures(NMkClassId), если в нем хранится порядка 10000 записей. Во время работы макроса пользователю предлагается выбрать номенклатуру, с наложенными на нее фильтрами и пр..., память после этого не освобождается.
P.P.P.S. Еще... когда система виснит, то даже диспетчер задач вызвать не удается, блокнот запустить - тоже, о состоянии системы (200Мб свободно, 50% - загрузка процессора, на постоянном уровне) узнал через счетчики (журналы оповещения производительности). Если еще подождать, то со временем будет выдавать Out of system resurse при шевелении мышкой.

Re: Проблема с памятью

может всётаки код посмотрим? smile

Re: Проблема с памятью

Если смотреть код..., то это штуки 3 - отчета и 4 макроса, листинг каждого - ужасно большой, вам оно надо?...Ведь не известно в чем же дело... Может все-таки на пальцах разобраться, или все-таки без кода - никак?...

Re: Проблема с памятью

Станислав писал(а):
листинг каждого - ужасно большой, вам оно надо?

мне - нет smile

Станислав писал(а):
...Ведь не известно в чем же дело... Может все-таки на пальцах разобраться, или все-таки без кода - никак?...

про пальцы - сомневаюсь. просто меня терзают сомнения...всё ли Вы за собой чистите

Re: Проблема с памятью

На счет очистки - не сомневайтесь, все делается как надо, всем объектам кроме TCSApp присваивается Nothing,... ну я же писал выше... Все пути ведут к их удалению в конечном счете. Единственное, в наборе данных в отчетах не удаляются TCSApp объекты должным образом, т.к. было очевидным полагать, что память после закрытия отчета - освобождается.
И все-таки хотелось бы получить ответ на 3 P.S. выше...

Re: Проблема с памятью

Ну соврите хотя бы что-нить, если правду не знаете)

Re: Проблема с памятью

Станислав писал(а):
что же занимают объекты, почему при сворачивании ТКС оперативная память освобождается.

чудеса. у нас не освобождается)

Станислав писал(а):
P.P.S. Как много занимает памяти объект TCSApp.Nomenclatures(NMkClassId), если в нем хранится порядка 10000 записей. Во время работы макроса пользователю предлагается выбрать номенклатуру, с наложенными на нее фильтрами и пр..., память после этого не освобождается.

при правильном удалении должна освобождаться)

Станислав писал(а):
P.P.P.S. Еще... когда система виснит, то даже ...

доктор сказал в морг - значит в морг... если "система виснит", то что же Вы от неё хотите? )

Re: Проблема с памятью

Прочитал тут темы по поводу нехватки памяти (Out of System resurse) у вас на форуме. Появилось предположение, которое совпадает с предположением одного из пользователей: быть может объекты TCSApp (возможно и не только) - это ОКНА, у которых есть дескриптор (а их число ограниченно), и в случае появления в системе предельного числа таких окон - система виснит.
Ведь если окна нет - это не значит, что оно не существует))) Ведь у него есть ShowModale - показать. Значит наверное можно предположить что надо абсолютно для всех макросов (даже и "маленьких") присваивать объектам уникальные имена. Ибо клиент ими пользуется часто.
Вопрос: объекты - ОКНА???

Re: Проблема с памятью

А вот и ссылка на подобные симптомы https://forum.technologics.ru/viewtopic … mp;start=0

Первоначально предполагалось, что компьютеру не хватает оперативной памяти для работы(512Мб). После экспериментов на сервере с объемом памяти 2Гб выяснилось, что проблема не в объёме памяти. В ходе дальнейших экспериментов выяснилось, что не хватает дескрипторов windows. Это проявляется в том, что после прекращения выполнения скрипта по ошибке в системе не возможно открыть никакого окна(Alt+Ctr+Del, или вообще закрыть TCS - окошко "Хотите выйти Да/Нет?"). Если же в системе закрыть любое окно(например если был открыт проводник и его закрыть), то сразу появляется возможность продолжить работу. Видимо проблема в высвобождении дескрипторов системы."

Жду с нетерпением ответа

Re: Проблема с памятью

Станислав писал(а):
Значит наверное можно предположить что надо абсолютно для всех макросов (даже и "маленьких") присваивать объектам уникальные имена. Ибо клиент ими пользуется часто.


Совершенно верное предположение  :wink:

Re: Проблема с памятью

Объекты-ОКНА???