Zum Inhalt springen

GDI-Objekte lassen das Programm abstürzen


UliA

Empfohlene Beiträge

hi,

wir haben ein sehr großes Problem in unserem Warenwirtschaftssystem. Zunächst einmal erst die Vorinfos: Die Entwicklung unseres Programms begann vor über 10 Jahren mit VB. Noch ist die Mehrheit der der Module in VB geschrieben. Allerdings ersetzen und erweitern wir sukzessive unser Programm um VB.NET Komponenten. Momentan ist aber das Hauptprogramm in VB. Dieses wiederrum ruft dann die .NET Komponenten auf, welche darin gehostet werden.

Nun kämpfen wir mit einem Problem:

VB hat keine anständige Speicherverwaltung, sodass die GDI-Objekte, welche man sich beispielsweise im Task-Manager anzeigen lassen kann, sich während des Betriebs kontinuierlich erhöhen. Windows hat aber ein Limit bei 10.000 Objekten, sodass das Programm bei dieser Grenze immer abstürzt. Das macht sich vorwiegend bei unseren am Terminalserver arbeitenden Usern bemerkbar. Warum besonders bei denen, weiß ich auch nicht.

Jetzt die Frage: Wie können wir die entsprechenden GDI-Objekte der Module löschen, wenn diese geschlossen wurden? Bei den "normalen" Clients wird der Speicherbereich hingegen schneller wieder frei.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich kann kein .NET, würde aber darauf tippen, dass man analog zu Java alle Referenzen auf ein Objekt entfernen muss und den Garbage Collector per Hand aufruft (sollte man zwar nicht machen, aber könnte eine Übergangslösung sein)

nun, die möglichkeit geht immer :) wobei ich bei vb nicht sicher bin, ob man da in den garbage collector eingreifen kann. aber wie gesagt ist das programm schon sehr alt und es ist viel in vb geschrieben. das problem ist, dass das ein riesiger aufwand wäre. wir würden das gerne anders regeln, z.b. durch eine methode der windows speicherverwaltung, was alle nicht mehr referenzierten objekte löscht

Link zu diesem Kommentar
Auf anderen Seiten teilen

[...] z.b. durch eine methode der windows speicherverwaltung, was alle nicht mehr referenzierten objekte löscht

genau das macht der Garbage Collector...

Wenn Windows eine interne Grenze hat, dann würde ich eher sagen, dass das Problem bei Euch in der Anwendung liegt und da hilft es nun mal nur, wenn man Code entsprechend designed. Wenn Du nicht mehr referenzierte Objekte entfernen willst, dann nimm den GC, warum Du das nicht willst, ist mir auch schleierhaft

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich nehme an, was geht um via COM eingebundene Komponenten? Um was für Komponenten handelt es sich, mit oder ohne GUI? Überhaupt, in welchen Bereichen entsteht das Problem? Warum gebt ihr die Objekte nicht frei?

Womöglich braucht ihr mehr Beratung, als ein paar Tips aus dem Forum. Irgendwann wird wohl eine Neuentwicklung anstehen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...
genau das macht der Garbage Collector...

Wenn Windows eine interne Grenze hat, dann würde ich eher sagen, dass das Problem bei Euch in der Anwendung liegt und da hilft es nun mal nur, wenn man Code entsprechend designed. Wenn Du nicht mehr referenzierte Objekte entfernen willst, dann nimm den GC, warum Du das nicht willst, ist mir auch schleierhaft

VB hat keinen Garbage Collector!

Inzwischen sieht es wohl so aus, dass die alten Controls von Drittherstellern die Ressourcen nicht mehr freigebeben. Deswegen müssen wir damit jetzt leider erst mal leben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...