Domino 9 und frühere Versionen > ND8: Entwicklung
Agentensterben, die zweite!
Ralf_M_Petter:
Alle Notes Objekte haben einen C++ Unterbau der wiederum auf einen C Unterbau aufbaut. Die Problematik ist, dass deine JVM von diesem Unterbau gar nichts weiß.
Bei Recycle gelten folgende Regeln:
Übergeordnete Objekte recyceln untergeordnete automatisch wenn Sie recycelt werden.
z.B. wenn du ein Database Objekt hast und z.B. mehrere View Objekte, dann werden beim recyceln der Database automatisch die View Objekte mitrecycelt. Wenn man die Session recycelt, werden alle NotesObjekte die aus dieser Session erstellt wurden mitrecycelt.
Deshalb sollte man in Java Programmen zum Schluß auf jeden Fall die Session recyceln.
Aber in Agents bekommt man die Session vom Agentmanager, deshalb darf man die Session auf keinen Fall recyceln. Meiner Meinung nach ist in Agents die Best Practice nur NotesObekte zu recyceln, die in Schleifen verwendet weren. wie z.B. den Doc Objekt. Alle anderen würde ich nicht recyceln und dem Agent Manager überlassen.
Grüße
Ralf
flaite:
--- Zitat von: mleussner am 23.11.09 - 14:08:05 ---Ich verstehe nur nicht, bei welchen Java Objekten native C++ Objekte verwendet werden, die ich entsorgen muß.
Ist das nicht ein Bug in der Umsetzung von Java zu C++??
--- Ende Zitat ---
Falsche Richtung. Da wird nix irgendwo "umgesetzt". Das läuft über JNI. JNI bindet C-Referenzen in Java Objekten. Der Garbage Collector muß schon aus Performance-Gründen grundsätzlich so konstruiert sein, dass er nicht viel über die C-Referenzen weiss. Das ist in der SWT Bibliothek von Eclipse auch nicht anders. Da werden auch native Systemressourcen des OS per JNI eingebunden und da muß auch der Anwendungsentwickler die Objekte entsorgen.
Von einem Bug kann man nicht reden. Es ist durch die Architektur von Garbage Kollektoren bedingt. Garbage-Kollektoren mit Wissen über in JNI eingebundene Objekte wären deutlich langsamer.
--- Zitat ---Ich war eigentlich davon ausgegangen (meine Nicht-Notes-Java-Programmier-Kollegen auch), daß ich das activeDoc nicht recyclen muß, da es ja sofort wieder benutzt wird.
--- Ende Zitat ---
Da braucht man übrigens kein Java Programmierer zu sein.
Auch in LotusScript oder JavaScript sind die Referenz eines Objekts und das Objekt selbst 2 unterschiedliche Dinge.
Und letztlich entspricht es auch der Logik in der physischen Welt.
Ich schreibe mit Bleistift das Wort Köln.
Wenn ich das mit einem Radiergummi entferne, ist dann die mit dem Geschriebenen referenzierte Stadt ausradiert ???
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln