Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: magic_halli am 16.01.09 - 14:35:05

Titel: LS2J: Objekte freigeben?
Beitrag von: magic_halli am 16.01.09 - 14:35:05
Hi,

ich habe einen LS-Agent, der mittels LS2J eine Java-Bibliothek anspricht.
Vielleicht eine etwas blöde Frage, aber muss/sollte ich auch hier die Objekte am Ende wieder freigeben?
Code
Function run()
   Dim jSession As JAVASESSION
   Dim jError As JAVAERROR
   Dim jClass_ApplicationStart As JAVACLASS
   Dim jObject_ApplicationStart As JAVAOBJECT
...
' Objekte am Ende freigeben???
' bspw.: Set jSession = Nothing etc. 
End Function
Ich habe das bisher nicht gemacht  :-\ , bin aber vorhin über eine Aussage gestolpert, das auch immer diese Objekte freigegeben werden müssen, bspw. um Fehlern wie "lokaler Heap ist voll" o.ä. vorzubeugen!

Mit LotusScript-Objekten mache ich das bisher jedoch auch, bspw.:
Code
Sub Initialize
...
   Set docMail = Nothing
   Set docProfil = Nothing
   Set dcMail = Nothing
   Set db = Nothing
   Set session = Nothing	
Exit Sub

Danke und Gruß

Rico.
Titel: Re: LS2J: Objekte freigeben?
Beitrag von: flaite am 17.01.09 - 14:21:41
Reine LotusScript Objekte brauchst du gar nicht auf nothing zu setzen. Das macht Notes selbst.
Bei LS2J mach ich es. Man braucht es aber afaik nicht immer. Wenn LS2J aus zeitgesteuerten Agenten aufgerufen wird auf jeden Fall. Ich glaub das es bei aus der GUI-getriggerten Zeugs auch automatisch entsorgt wird. So wirklich sicher bin ich mir da aber nicht. Deshalb setze ich LS2J Objekte immer auf nothing.
Heap Probleme treten nach meinen Beobachtungen oefter auf, wenn viele NotesJava-Objekte in Schleifen initialisiert werden und nicht entsorgt werden.