ОБСУЖДЕНИЕ

Как определить выгрузился ли агент полностью?

54 ответов 19 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

может я уже торможу
memory allocated это разве не доступная память?
и почему агенту так мало доступно на сервере где 6 гиг ОЗУ?
 
агенту так мало доступно на сервере где 6 гиг ОЗУ
Надо было все 6 отдать твоему агенту? Агент-Наполеон прямо! )))
memory allocated это разве не доступная память?
тогда старя добрая операция MemAlloc, вероятно, освобождает память )))
 
Akupaka
может уже кончишь стебаться?
переведи "memory allocated" на русский

Добавлено:
Вообще-то, распределённая (выделенная), т.е. то, что отдала ОС в распоряжение
вот и я про это, фактически можно приравнять к свободной
а значит в начале агент было выделено меньше чем в его конце
тут только два варианта ответа:
1) память была освобождена паралельным агент менеджером и поэтому этому теперь больше досталось
2) агент настолько пригрузил систему что та выделила ему еще и Lsi_info(50) не является показателем сколько сьел агент
и оба ответа не дают ответ выгрузился ли агент...
 
вот и я про это, фактически можно приравнять к свободной
а значит в начале агент было выделено меньше чем в его конце
Фактически НЕЛЬЗЯ приравнять к свободной. Свободная — это ещё не распределённая память. А allocated — это память, выделенная под объекты агента. Создаёте новый объект — ОС выделяет ему память, соответственно, объём выделенной для работы агента памяти увеличивается.
 
в общем я запутался...
всё было хорошо пока я не взял и не вставил в агент
Код:
Sub Initialize 
LSMA = Lsi_info(50) 
LSMAOS = Lsi_info(51) 
LSB = Lsi_info(52) 

------ вызов мегапроцедур------ 
End Sub 
Sub Terminate 
Dim l_LSMA As Long, l_LSMAOS As Long, l_LSB As Long 
l_LSMA = Lsi_info(50) 
l_LSMAOS = Lsi_info(51) 
l_LSB = Lsi_info(52) 

Print "Итого, памяти потрачено: " & l_LSMA-LSMA & ", OS: " & l_LSMAOS-LSMAOS & ", блоков: " & l_LSB-LSB 
End Sub
Итого все значение на выходе отрицательные, когда же игрался в конктретой функции или библиотеке всё было прогнозируемо
 
ToxaRat
Если бы мы знали алгоритмы выделения и освобождения памяти... А так нужно относиться к этому как к черному ящику, и не заниматься ерундой. :)
 
Yakov
у меня специальность "черный ящик" - так что почти в яблучко :)

Добавлено: Yakov
у меня тут еще идеи нарисовались, получается на терминейте уже ничего вызывать нельзя.....
 
nvy
КМК, вызывать можно только удаляторы, для того оно и предназначено. Ну ещё м.б. Print.
а вот тут похоже всё тоже не совсем гладко
Erase & Delete вызванные правильно в конце процедуры освобождают(или делают вид) больше памяти, чем вызванные в терминейте
 
Erase & Delete вызванные правильно в конце процедуры освобождают(или делают вид) больше памяти, чем вызванные в терминейте
Возможно, кое-что удаляется Лотусом неявно при выходе из процедуры. Соответственно, если чистить память в конце процедуры, её освобождается больше, чем в terminate. Аналогично можно предположить, что к началу initialize Лотус уже что-то выделил агенту. Можно поиграться с определением памяти до/после вызова агента (из другого агента). Теоретически должно быть одинаково. На практике — это ж ИБМ...
 
nvy
есть у меня предположение что тут как в Сях, используется всё время виртуальная память а значит чем раньше грохнуть обьект тем быстрее он освободит память
а вот на терминейте гроханье обьектов может "забываться/подтормаживать"
 
Akupaka
может не так выразился, отличие свободной памяти от динамической, когда обьект создаётся/рушиться через new/delete и malloc()/free()
а так как лотус писался на Сях, то скорее всего косячить начали еще тама
 
отличие свободной памяти от динамической, когда обьект создаётся/рушиться через new/delete и malloc()/free()
Ва?.. О.о Антон, ты точно не путаешься в работе с памятью и с объектами?
Свободная память - это незанятая данными память. Часть динамической памяти может быть свободной.
new и malloc отличаются по работе, new создает объект определенного типа в динамической памяти, malloc - выделяет участок памяти нужного размера под данные в динамической памяти.
 
нда, признаю, пытаясь обьяснить попроще я лишь усложнил дело
кому интересно есть хорошая статья на эту тему - www.insidepro.com/kk/221/221r.shtml - Охота и рыбалка в динамической памяти
 
воткните какое нибудь логгирование на terminate агента. Должно отработать в случае если агент свалился или завершился удачно
 
nnikishi
акцент этого топика на выгружение агента из памяти, чтобы никаких утечет не было
 

Статистика тем

Создано
ToxaRat,
Последний ответ от
ToxaRat,
Ответы
54
Просмотры
19 035