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

fedotxxl

Well-known member
09.11.2005
614
0
#1
Млин... принудительно чистим память, чтобы не падал сервер. Агент запускается runOnServer. В конце агента срабатывает print, но исполнение агента не заканчивается - зависает =(. Сервер 8.5.1FP1, Linux... Что делать?
 

fedotxxl

Well-known member
09.11.2005
614
0
#3
>может стоит принудительно не занимать память на сервере?
Предложи способ, мы попробуем

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

На других серверах (правда тестировали только на Windows) все нормально работает
 

fedotxxl

Well-known member
09.11.2005
614
0
#5
Система написана на классах. Работает, работает... потом бумс и не работает
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#6
это чисто LS классы?
или есть раперы вокруг САПИ, LS2J
 

TIA

:-)
Lotus team
15.05.2009
790
3
#8
LS не любит слишком много экземпляров классов. Память течёт и с очисткой кучи не всё хорошо. Часто очень много объектов физически удаляется из кучи только при выгрузке агента. Проявляется как раз долгой выгрузкой агента после выполнения последнего оператора. Лечится явным Delete объектов, особенно тех, которые имеют циклические ссылки друг на друга.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#9
а память смотрели?
скока жрут домино процессы - мониторить пытались? домина ограничена 32бит
 

fedotxxl

Well-known member
09.11.2005
614
0
#10
TIA
Тут ситуация обратная - система виснет, если очищать память... причем только на определенных серверах

lmike
Каким образом?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#11
*никс утилитами ;)
неуж-то одмины утилей не знают?
 
13.03.2009
625
1
#12
LS не любит слишком много экземпляров классов. Память течёт и с очисткой кучи не всё хорошо. Часто очень много объектов физически удаляется из кучи только при выгрузке агента. Проявляется как раз долгой выгрузкой агента после выполнения последнего оператора. Лечится явным Delete объектов, особенно тех, которые имеют циклические ссылки друг на друга.
+1.
про циклические ссылки( на примере linked-lists ) доходчиво расписано у жерарда: http://www-10.lotus.com/ldd/bpmpblog.nsf/d...s-best-practice
Andre Guirard сказал(а):
Управление памятью в LS далеко от идеала. Я встречал ситуациии, когда сборщик мусора не справлялся с задачей освождения памяти: например, при наличии у объекта ссылок, которые объявлены в другой библиотеке( класс из библиотеки А содержит ссылку на объект, объявленный в библиотеке B ). Чем больше объектов вы удаляете вручную - тем больше вероятность того, что вы не будете иметь проблем с памятью.
....
 

fedotxxl

Well-known member
09.11.2005
614
0
#13
С утечкой памяти еще как-то можно бороться... а как бороться с тем, что агент зависает из-за того, что МЫ БОРЕМСЯ С УТЕЧКОЙ ПАМЯТИ
 

nvyush

Lotus team
22.04.2009
2 317
0
#14
С утечкой памяти еще как-то можно бороться... а как бороться с тем, что агент зависает из-за того, что МЫ БОРЕМСЯ С УТЕЧКОЙ ПАМЯТИ
Может стоит присмотреться к порядку вызова Delete. Возможна ситуация, когда удаляется сперва родительский объект, затем дочерний.
 

fedotxxl

Well-known member
09.11.2005
614
0
#16
Похоже (хотя не могу утверждать на 100%), была проблема в:
в объект А объект Б, в объекте Б объект С. Насколько я понял, на сервере 8.5.1FP1 достаточно было удалить объект С и была *цензура* На 8.5.1FP2 нужно было удалить объект С, а потом попробовать получить к нему доступ через объект Б...

не понятно мне, что тут такого запретного?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#17
ВМ старая ;), а работать над ней у ИБМ не хватает сил/времени/желания
 

fedotxxl

Well-known member
09.11.2005
614
0
#19
Раз уж тема пошла о памяти - какие объекты нужно чистить? Только объекты самописных классов или же еще LS?