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

  • Автор темы Автор темы ToxaRat
  • Дата начала Дата начала
может я уже торможу
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 - Охота и рыбалка в динамической памяти
 
Небольшая статейка с теорией работы Lotus с памятью. Может что-нить полезное и найдется.



Ну и до кучи можно покопаться еще там же, есть немало интересного
 
воткните какое нибудь логгирование на terminate агента. Должно отработать в случае если агент свалился или завершился удачно
 
nnikishi
акцент этого топика на выгружение агента из памяти, чтобы никаких утечет не было
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab