Domino 9 und frühere Versionen > ND7: Entwicklung
Hoher Speicherverbrauch bei LotusScript-Agenten
oson00:
Hallo,
ich habe jetzt schon das zweite Mal das störende Phänomen, dass ein LotusScript Agent unnötig viel Speicher verbraucht und wenn dieser fertig mit der Verarbeitung ist, den Speicher auch nicht freigibt.
Beide Agenten verarbeiten viele Dokumente. Sie laufen in der Regel sehr lange, weil sie für die einzelnen Dokumente Ausgabe-Dateien erstellen.
Dass die den Speicher verbrauchen, stört mich nicht, aber dass der Speicher nach dem Lauf (10-30 Minuten) nicht wieder freigegeben wird, ist nicht schön.
Das Problem tritt sowohl lokal als auch bei einem periodischen Agentenlauf auf.
Kennt jemand das Problem?
Glombi:
Üblicherweise iteriert man so:
set dc = .... 'NotesDocumentCollection bauen...
set doc = dc.GetFirstDocument
do while not (doc is nothing)
....
set doc = dc.GetNextDocument(doc)
loop
Ich kann mich an einen Vortrag erinnern (ich glaube es war der von Alan Lepowski auf der ILUG2007), wo gesagt wurde, dass dieses evtl. zu einem Speicherproblem führen kann, da jeweils für jedes doc in der Schleife eine neue Instanz angelegt wird.
Also kannst Du mal folgendes machen:
dim doc as NotesDocument
dim nextdoc as NotesDocument
set dc = .... 'NotesDocumentCollection bauen...
set doc = dc.GetFirstDocument
do while not (doc is nothing)
set nextdoc = dc.GetNextDocument(doc)
....
Delete doc
set doc = nextdoc
loop
Mit dem Delete wird der Speicher sofort aufgeräumt.
Andreas
oson00:
Oh... Ich habe diverse Delete schon eingebaut. Klar! Aber DA drauf bin ich noch nicht gekommen.
Es würde aber passen. Ich probiere es aus und gebe das Ergebnis bekannt.
Sowas muss man ja wissen, dass der das Objekt nicht einfach wegwirft! Sowas!
oson00:
Hm, also in einem Test konnte ich das gut nachstellen, dass es dort ein Problem gibt, aber in meinem Agenten hilft das noch nicht vollständig.
Entweder habe ich noch etwas übersehen oder es liegt noch an etwas anderem. Der Tipp war auf jeden Fall schonmal goldwert. Danke!!
oson00:
Ich muss doch widersprechen.
Ich habe anfangs gedacht, dass ich damit was in den Griff bekomme. Aber das ist nicht das Problem. Ich habe das Ganze mal mit einem Test-Agenten nachgespielt. Hierbei wird doch kein Speicher wieder freigegeben bzw. wenn man kein Delete benutzt, wird auch die Instanz nicht weiter im Speicher vorgehalten.
Hat sonst noch jemand eine Idee?
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln