Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino
java/lang/OutOfMemoryError in einem Zeitgesteuerten Agenten
USmash:
So, die ersten 10 Durchläufe sind im Kasten. Mal sehen, wie es am Montag aussieht.
Bis dahin...
Uwe
flaite:
Hallo Uwe,
kannst Du mir vielleicht mal diese Datei schicken ???
D:\Programme\Lotus\Domino\Prog\heapdump.20120119.110424.1916.0006.phd
axel punkt janssen klammeraffe gmail punkt com
Mich würde interessieren wie das aussieht.
Die Fehlermeldung "Attempt to retrieve Java agent attachments failed" würde btw. Sinn ergeben. Der Agenten ClassLoader holt sich ja seine Klassen aus Attachments. Die Meldung ist kryptisch, aber wenn man da drinsteckt wiederum nicht. Man kann das nicht wissen, wenn man zwischendurch mal einen Java Agenten entwickeln, also keine Kritik an dir.
Schon wirklich irre, dass Memory Leaks durch ClassLoader erzeugt werden. Also etwas, das 100% unter Kontrolle der Produkt-Entwickler steht. Nach fast 15 Jahren Java in Domino. ClassLoader können in komplexen Java Umgebungen komplex werden. In JBoss wurd das etwa in der 8er Version ganz neu gemacht. Die hatten da auch Leichen im Keller, aber sie führten nicht zu Memory Leaks. Es konnte nur bei mehreren Versionen von jars komplex werden, welche Version geladen wird. Websphere hat das btw. von Anfang an sehr transparent gelöst. Ich vermute, dass dieses Problem seit Domino 5 oder sogar 4.6 nie angegangen wurde. Nicht wichtig. Ich brabbel nur vor mich hin.
Liebe Grüße
Axel
USmash:
Moin zusammen,
der Agent hat übers Wochenende wie geplant nigx gemacht und ab Montag bis jezt klaglos durchgehalten. :D
Vielen Dank für die hilfreichen Tips, die jetzt zum Erfolg geführt haben.
flaite:
Ich hab in den letzten 6 Jahren ja auf Domino weitgehend nur noch Spezial-Ausgaben mit Domino und Dojo/JavaScript gemacht.
Bei den Java Agenten hab ich immer darauf insistiert, dass die 3rd-party jars ins lib/ext kommen. Hab mit dem Anhängen an den Agenten einmal schlechte Erfahrung gemacht und bin dann der Ursache nie auf den Grund gegangen.
Die Diskussionen über dieses Vorgehen tendierten dazu, unangenehm zu sein, weil Domino-Administratoren und andere aficionados von Domino es für nicht richtig "professionell" hielten. Der praktische Kern ist, dass das lib/ext nicht repliziert wird. Für jeden neuen Server, auf die wo der Agent verteilt wird, muss das lib/ext händisch kopiert werden.
Nun hat Stephan Wissel kürzlich in einer codestore.net Diskussion darauf hingewiesen, dass die für den Classloader, der in den Agenten hereingehängten jars, der garbage collector von Java nicht wirklich funktioniert. Damit ist lib/ext die einzige Chance, um Memory Leaks zu verhindern!
Ich vermute, dass dies seit 4.6 broken ist. 13 Jahre wurd dieses fundamentale Problem von Lotus@IBM nicht angegangen.
Wie viele mühsam entwickelte Java Agenten werden wohl an diesem undokumentierten Bug gescheitert sein? Wie oft werden Entwickler gedacht haben, dass sie die im Grunde einfachen recycle() Regeln doch nicht endgültig kapiert haben und dass der Memory Leak darin begründet liegt?
Gruß Axel
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln