Garbage-Collector!

lernen.2007

Erfahrenes Mitglied
Hallo Leute,

wenn ich mit new eines Objektes eine MySql Datenbank öffne, wird es dann garbage collector nach Beendigung des Programms die Datebank schliessen oder muss ich es explizit session.close schliessen.

Danke
erkan
 
Sollte der Garbage Collector feststellen das die Ressource nicht mehr gebraucht wird wird er sie schon "beseitigen" es gehört imho aber zu gutem Programierstil die Verbindung selber zu schliessen da man nicht sicher sein kann wann der GC anfängt zu arbeiten.
 
Also mit Connections und Datenbanken ist das so eine Sache.
Z.B. kann es passieren, das sich das Programm schon längst verabschiedet hat, aber die DB-Connection Datenbankseitig noch immer als offen angesehen wird. Das würde bedeuten, das beim erneuten ausführen des Programms, welches die Connection nict schließt eine weitere im DB-System geöffnet wird und offen bleibt, wenn nicht die DB selbst nach einiger Zeit meint diese nicht genutzte rauszu schmeißen, ist aber IMHO DB-Systemabhängig und auch möglicherweise 'ne frage der Konfiguration der DB.
Im schlimmsten Fall wird die DB irgendwann keine Connections öffnen können weil schon zu viele offen sind. Das ist mir mit Oracle anfangs passiert.
Also... nach jeder DB-Transaction bitte sicherstellen, dass entweder die Connection geschlossen wird, oder zurück in einen ConnectionPool gegeben wird. Sinnvollerweise verwendet man dazu das finally statement vom try block des DB-Zugriffs.

Viel Spaß

takidoso
 
Zurück