На сервере зависает агент при очищении памяти

  • Автор темы Автор темы fedotxxl
  • Дата начала Дата начала
F

fedotxxl

Млин... принудительно чистим память, чтобы не падал сервер. Агент запускается runOnServer. В конце агента срабатывает print, но исполнение агента не заканчивается - зависает =(. Сервер 8.5.1FP1, Linux... Что делать?
 
>может стоит принудительно не занимать память на сервере?
Предложи способ, мы попробуем

>как именно чистите???
Метод Delete

На других серверах (правда тестировали только на Windows) все нормально работает
 
Система написана на классах. Работает, работает... потом бумс и не работает
 
это чисто LS классы?
или есть раперы вокруг САПИ, LS2J
 
LS не любит слишком много экземпляров классов. Память течёт и с очисткой кучи не всё хорошо. Часто очень много объектов физически удаляется из кучи только при выгрузке агента. Проявляется как раз долгой выгрузкой агента после выполнения последнего оператора. Лечится явным Delete объектов, особенно тех, которые имеют циклические ссылки друг на друга.
 
а память смотрели?
скока жрут домино процессы - мониторить пытались? домина ограничена 32бит
 
TIA
Тут ситуация обратная - система виснет, если очищать память... причем только на определенных серверах

lmike
Каким образом?
 
*никс утилитами ;)
неуж-то одмины утилей не знают?
 
LS не любит слишком много экземпляров классов. Память течёт и с очисткой кучи не всё хорошо. Часто очень много объектов физически удаляется из кучи только при выгрузке агента. Проявляется как раз долгой выгрузкой агента после выполнения последнего оператора. Лечится явным Delete объектов, особенно тех, которые имеют циклические ссылки друг на друга.
+1.
про циклические ссылки( на примере linked-lists ) доходчиво расписано у жерарда:
Andre Guirard сказал(а):
Управление памятью в LS далеко от идеала. Я встречал ситуациии, когда сборщик мусора не справлялся с задачей освождения памяти: например, при наличии у объекта ссылок, которые объявлены в другой библиотеке( класс из библиотеки А содержит ссылку на объект, объявленный в библиотеке B ). Чем больше объектов вы удаляете вручную - тем больше вероятность того, что вы не будете иметь проблем с памятью.
....
 
С утечкой памяти еще как-то можно бороться... а как бороться с тем, что агент зависает из-за того, что МЫ БОРЕМСЯ С УТЕЧКОЙ ПАМЯТИ
 
С утечкой памяти еще как-то можно бороться... а как бороться с тем, что агент зависает из-за того, что МЫ БОРЕМСЯ С УТЕЧКОЙ ПАМЯТИ
Может стоит присмотреться к порядку вызова Delete. Возможна ситуация, когда удаляется сперва родительский объект, затем дочерний.
 
Похоже (хотя не могу утверждать на 100%), была проблема в:
в объект А объект Б, в объекте Б объект С. Насколько я понял, на сервере 8.5.1FP1 достаточно было удалить объект С и была *цензура* На 8.5.1FP2 нужно было удалить объект С, а потом попробовать получить к нему доступ через объект Б...

не понятно мне, что тут такого запретного?
 
ВМ старая ;), а работать над ней у ИБМ не хватает сил/времени/желания
 
вот тут пару намеков от айбиэмера по поводу очисток
 
Раз уж тема пошла о памяти - какие объекты нужно чистить? Только объекты самописных классов или же еще LS?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!