Большое Количество Ссылок Nothing

Serduko

Well-Known Member
11.10.2011
170
0
#1
Вопрос больше теоретический, без примера.
У меня есть объект, в нем второй объект, в этом объекте ссылки на несколько NotesDocument. Задаюсь вопросом, стоит ли инициализировать второй объект, если NotesDocument, которые он должен содержать, еще не созданы. Если инициализировать его, будут некоторые удобства для меня, но с другой стороны память.

На сколько критично для памяти иметь большое количество ссылок на Nothing?
 

savl

Well-Known Member
Lotus team
28.10.2011
2 116
157
32
#2
Serduko
Как насчет "ленивой инициализации" при первом обращении к объекту?
 

Serduko

Well-Known Member
11.10.2011
170
0
#3
Serduko
Как насчет "ленивой инициализации" при первом обращении к объекту?
Как раз выбираю между ней и инициализацией при инициализации первого объекта. При таком раскладе логика перегружается, а я систему хочу сделать максимально гибкой и отказоустойчивой.
 

savl

Well-Known Member
Lotus team
28.10.2011
2 116
157
32
#6
Serduko
Да, можно посмотреть сколько памяти уходит, для утечек.
Вот ссылка на
Чтобы видеть этот контент необходимо: Войти или зарегистрироваться


<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Если вдруг она умрет:</div></div><div class="sp-body"><div class="sp-content">
Company: Dalsgaard Data

Contact: John Dalsgaard

URL: http://www.dalsgaard-data.dk

Description
Most of you may have discovered memory leaks when your Notes
client is running a large job or just running an application on
the Domino server.

I have seen it in various places - and the sources to the problems
may be almost impossible to identify in your code.

I have come across the following undocumented (as far as I know)
features that can assist you in finding the the malicious code.



Code The basic trick is to know the name of a function call to some
internal registers that will return the information needed:

LotusScript Memory Allocated: Lsi_info(50)
LotusScript Memory Allocated from OS: Lsi_info(51)
LotusScript Blocks Used: Lsi_info(52)

Now if you want to use this code in a foreground agent it could
look like this:
Код:
Sub Initialize
Msgbox(" Total LotusScript Memory Allocated: " + (Lsi_info(50)))
Msgbox(" Total LotusScript Memory Allocated from OS: " +
(Lsi_info(51)))
Msgbox(" Total LotusScript Blocks Used: " + (Lsi_info(52)))
End Sub
To find out if there is a leak you will have to run the code
BEFORE and AFTER the code that you want to investigate.

If you want to use the code in a background agent you would have
to print to the LOG.NSF by using code that looks like this:

Код:
Sub Initialize
Print "Memory Allocated: " + Str$(Lsi_info(50)) + Chr$(10) + Chr
$(13)
Print "Total LotusScript Memory Allocated from OS: " + Str
$(Lsi_info(51)) + Chr$(10) + Chr$(13)
Print "Total LotusScript Blocks Used: " + Str$(Lsi_info(52)) + Chr
$(10) + Chr$(13)
End Sub
Be careful if you write the information to a document in a
database (say your own log facility) since this does also consume
some memory and thus the BEFORE and AFTER measurements are NOT
going to be equal.
 

Serduko

Well-Known Member
11.10.2011
170
0
#7
Serduko
Да, можно посмотреть сколько памяти уходит, для утечек.
Вот ссылка на
Чтобы видеть этот контент необходимо: Войти или зарегистрироваться


<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Если вдруг она умрет:</div></div><div class="sp-body"><div class="sp-content">
Спасибо, на одну пустую ссылку уходит примерно 5к (хотя в некоторых случаях вообще было почти 0, неясно). Заметил в Лотусе постоянную утечку памяти, с каждым новым запуском агента. Наверно, сделаю все таки ленивую инициализацию, кто знает, до каких объемов дойдет в будущем.
 

savl

Well-Known Member
Lotus team
28.10.2011
2 116
157
32
#8
Serduko
Чистый LS? java нет?
Там предупреждают что могут быть разные результаты.
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 203
24
38
Киев
ToxaRat.com
#9
Заметил в Лотусе постоянную утечку памяти, с каждым новым запуском агента. Наверно, сделаю все таки ленивую инициализацию, кто знает, до каких объемов дойдет в будущем.
Проходили - фигня всё это, забудьте!

Из-за наличия у домино своего менеджера памяти ничего вы замереть не сможете - никогда :D

И Lsi_info я бы не увлекался вообще - это пострашнее RND в некоторых совсем казалось бы нелогичных конструкциях ложит сервер на раз

Если дествительно хотите заняться "оптимизацией" то постарайтесь обращать внимание не на память а на то, сколько раз вы базу дергаете - потому как бич любой базы это обращения к дисковой, вот тут, уменьшая количество обращений и строя однопроходную логику вы весьма серьезно ускоряете всё, и пофиг что подобный подход сожрёт в 10 раз больше памяти, зато какая скорость!!!
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 435
351
homepage.mac.com
#12
с 9-ой версии оно уже д.б. в составе (ну может не такое свежее :D )
 

Darkhan

Well-Known Member
Lotus team
14.12.2012
98
4
32
Astana
#15
Поосторожней с объектами типа
У меня есть объект, в нем второй объект, в этом объекте ссылки на несколько NotesDocument.
Если таких объектов будет туева хуча, (например если их складывать в лист) то память утечет у вас гораздо раньше.
Лотусовые объекты нежелательно хранить в масиивах(списках)
 

Serduko

Well-Known Member
11.10.2011
170
0
#16
Читал статью, давно (вот она, вроде), по этой теме, лотус запрещает сессию в клиенте, нужны изменения в ini файле 8 клиента, для получения сессии. Сейчас есть способы получить текущую сессию на клиенте?

Поосторожней с объектами типа

Если таких объектов будет туева хуча, (например если их складывать в лист) то память утечет у вас гораздо раньше.
Лотусовые объекты нежелательно хранить в масиивах(списках)
Туева хуча - это сколько?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 435
351
homepage.mac.com
#19
а причем тут OSGi, коей и поддерживает DOTS?
вот сравнение с агентом http://lotusnotus.com/lotusnotus_en.nsf/dx...-java-agent.htm
мне кажется что DOTS и на клиенте поднимается (как и xPages )

Добавлено: т.е. речь идет не про бридж, а про написание на java полностью
 

Serduko

Well-Known Member
11.10.2011
170
0
#20
а причем тут OSGi, коей и поддерживает DOTS?
вот сравнение с агентом http://lotusnotus.com/lotusnotus_en.nsf/dx...-java-agent.htm
мне кажется что DOTS и на клиенте поднимается (как и xPages )

Добавлено: т.е. речь идет не про бридж, а про написание на java полностью
Пока не готов отойти от толстого клиента, слишком много надо менять в уже устоявшейся системе.