Hallo, zusammen!
Ich habe ein Problem mit einem Windows Dienst, den ich geschrieben habe:
In der Hauptklasse des DIenstes wird eine Public Shared Collection angelegt, die eine Anzahl Objekte enthält (i.d.R. 4 Stück; ändern sich nur sehr selten).
Die Objekte werden in einer Methode mit Dim vgc as VGClient instanziiert und dann der Collection hinzugefügt. Nach sehr langer Laufzeit (i.d.R. 3-4 Monate)
kommt es dazu, dass plötzlich der Garbage Collector die Collection leert und das Collection object wegräumt. Ich merke das immer daran, dass, wenn ich
versuche, einen Enumerator auf die Collection zu bekommen, eine NullPointer-Exception geworfen wird.
Nun meine Frage(n):
- kann das Verhalten daran liegen, dass nur ganz am Anfang Schreibzugiffe auf die Collection stattfinden und danach nur noch Lesezugriffe?
- ist es ein Problem, ein mit Dim vgc as new VGClient insanziiertes Objekt einer Public Shared Collection hinzuzufügen? Spielt hier eventuell der Begriff "weak reference" eine Rolle?
- kann ich auf andere Weise dem Garbage Collector sagen, dass die Collection mit 4 Objekten noch benötigt wird und er seine Finger davon lassen soll?
Sourcecode stelle ich gerne zur Verfügung.
VIelen Dank im Voraus!
Der Kai
Ich habe ein Problem mit einem Windows Dienst, den ich geschrieben habe:
In der Hauptklasse des DIenstes wird eine Public Shared Collection angelegt, die eine Anzahl Objekte enthält (i.d.R. 4 Stück; ändern sich nur sehr selten).
Die Objekte werden in einer Methode mit Dim vgc as VGClient instanziiert und dann der Collection hinzugefügt. Nach sehr langer Laufzeit (i.d.R. 3-4 Monate)
kommt es dazu, dass plötzlich der Garbage Collector die Collection leert und das Collection object wegräumt. Ich merke das immer daran, dass, wenn ich
versuche, einen Enumerator auf die Collection zu bekommen, eine NullPointer-Exception geworfen wird.
Nun meine Frage(n):
- kann das Verhalten daran liegen, dass nur ganz am Anfang Schreibzugiffe auf die Collection stattfinden und danach nur noch Lesezugriffe?
- ist es ein Problem, ein mit Dim vgc as new VGClient insanziiertes Objekt einer Public Shared Collection hinzuzufügen? Spielt hier eventuell der Begriff "weak reference" eine Rolle?
- kann ich auf andere Weise dem Garbage Collector sagen, dass die Collection mit 4 Objekten noch benötigt wird und er seine Finger davon lassen soll?
Sourcecode stelle ich gerne zur Verfügung.
VIelen Dank im Voraus!
Der Kai
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „tonschnoer“ ()