Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino

Speicherverwaltung Java + Lotus Notes Domino

<< < (5/8) > >>

Ralf_M_Petter:
Die Erklärung mit dem das finalize nicht zuverlässig ist, stimmt natürlich auch.

Übrigens ist soweit ich weiß bei SWT ja die selbe Problematik.

Grüße

Ralf

flaite:
Yup. Ich habe diese Problematik vor 2 Jahren bestimmt überbetont.
(ich habe Bier getrunken und werde esoterisch)
Der wahre Zen ist vermutlich sogar, dass dies ein Teil einer noch größeren Problematik ist, zu der beispielsweise auch wirklich threadsafe HttpConnections mit apache.jakarta.commons.HttpClient gehören. Oder sicher LotusScript programmieren, wovon Bernhard manchmal spricht.
Manche Ressourcen sind in einem Netzwerk einfach knapp und man muß das als Programmierer managen. Die Frage ist nur welche, wann und wie.
Andere Ressourcen sollen nur genau einmal und nicht dupliziert oder nicht dupliziert pro Thread vorhanden sein (ok, threadsafe gehört hierhin). Auch das muß man oft als Programmierer selbst managen. Aber es ist irgendwie auch nur ein Aspekt der Ressourcen-Management-Thematik.
Und das kann nicht durch Tools, Frameworks, Design Patterns oder ähnlichem wirklich aufgelöst werden, da es oft auf den Einzelfall ankommt. 

koehlerbv:

--- Zitat von: kennwort am 01.02.06 - 21:33:18 ---... (ich habe Bier getrunken und werde esoterisch) ... Oder sicher LotusScript programmieren, wovon Bernhard manchmal spricht.
--- Ende Zitat ---

Irgendwie mag ich es, wenn Du Bier getrunken hast  ;D

Bei der Fülle der gegebenen Möglichkeiten ist der Einsatzspielraum von LotusScript etwas ... dünn, sagen wir mal. Dafür sollte man es dann aber wenigstens beherrschen und das, was man damit bezwecken will. Und damit schliesst sich wieder der Kreis, denn das gilt für jede "Ausdrucksform" gegenüber der Maschine.

Ich freue mich gerade (wieder) auf ein grosses Projekt, in dem sich die verschiedensten Welten sich vereinigen müssen. Ich glaube, dabei wird wie immer keiner dümmer. Ich bin da schon sehr gespannt.

Bernhard

Thomator:
@Axel,
die GarbageCollection ist (zumindest Ansatzweise) schon beeinflussbar. Die JVM-Parameter -XMX und -XMS sind dafür maßgeblich mitentscheidend.

Beispiel: JMeter
Ich hatte JMeter immer mit den Standard-Einstellungen laufen, wo XMX = XMS ist. Wenn ich also mit zu vielen Threads einen Test gestartet habe kam immer ein OutOfMemory.
Dann habe ich mal gelesen, dass der XMS-Wert bestimmt, wann die Garbage-Collection anfängt, 'gründlich' sauberzumachen. Also habe ich den XMX-Wert auf 3/4 des XMS-Wertes gesetzt, und siehe da, seitedem ist das Problem nie wieder aufgetreten. Man kann in der Console auch schön beobachten, dass die 'full GC' beizeiten ausgelöst wird und somit das Problem nicht mehr auftritt.
Mit diesem Wissen habe ich mich dann am Tomcat probiert und auch dort das OutOfMemory-Problem, mit dem ich zuvor lange gekämpft hatte, gelöst.
Wann die 'kleineren Objekte' von der GarbageCollection eingesammelt und zerstört werden hängt also offensichtlich auch von dem Verfügbaren Speicher ab (ist ja auch logisch).

Die Problematik mit den Threadsicheren HTTP-Connections ist mir grade im Domino-Umfeld gut bekannt. (Hängende HTTP-Requests, die das herunterfahren des Servers verhindern). Da hat der Commons.HTTPClient wirklich eine Lücke geschlossen.

Aber es gibt da offensichtlich noch andere Probleme mit dem Thread-Handling. So passiert es mir unter großer Last immer wieder mal, dass die JVM (mit JAVA-API Zugriffen) wegraucht. Im hs_pid stehen dann auch so Thread-Geschichten, die auf Memory-Leaks hinweisen, welche beim Aufruf der Thread.stop()-Methode entstehen. Diese Methode wird allerdings aus den API-Klassen (NotesThread.stermThread()) selbst aufgerufen.


@Ralf
Dass das recyclen der Session auch alle daraus instanziierten Objekte mit-recycelt ist mir neu. Aber gut zu wissen.

Thomas

flaite:
Hallo Thomas,

es ist schon richtig, dass man mit diesen Parametern tunen kann. Eine wirklich 100% zuverlässige Kontrolle über den garbage collector hat man aber nicht. OutOfMemoryExceptions können auch als Hinweis auf eine unsaubere Stelle im Code angesehen werden.
Notes Zugriffe haben bestimmt noch ein paar Rätsel. Wir haben hier z.B. gerade das Problem, dass ein im debug Modus gestarteter JBoss Exceptions wirft, die er im normalen Modus nicht wirft. Und das wird von Notes-Klassen geworfen.

Gruß Axel

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln