C# große Datenfelder finden

OP (Firma: s@Td) #3366942
Lesenswert?

Hallo,

ich habe ein C# WinForms Anwendung die eine externe Komponente (Canvas) 
benutzt. Leider wird irgendwo ein Array befüllt aber nicht entleert, 
sodass der Speicherverbrauch an die Grenzen kommt. Gibt es eine 
Möglichkeit diese großen Datenfelder aufzudecken? (VS oder #Develop)
#3367317
Lesenswert?

Marcus W. schrieb:
> ...einen Garbage-Collector, so
> dass das nicht passieren dürfte, wenn du es nicht explizit verlangst.

Man muss aber schon aufpassen. Trotz GC kann man noch sehr leicht 
Memory-Leaks produzieren (selbst wenn kein Native Code im Spiel ist).
Z.B. Event-Handler sind eine böse Falle. Wenn da ein Objekt registriert 
ist, hängt es natürlich noch im Speicher, obwohl alle anderen Referenzen 
die man so hat schon freigegeben wurden. Sowas kann man leicht 
übersehen.

Manchmal hilft dann wirklich nur noch der Memory Profiler.
Damit kommt man dann aber sehr schnell und zuverlässig ans Ziel, da 
dieser genau anzeigt welche Objekte von wem wie gehalten werden.
#3371243
Lesenswert?

Jenny schrieb:
> Gerade .Net zeigt dir doch beim Debuggen im Visual Studio an wo der
> Stack oder heapoverflow auftritt.

Es wäre schon ein riesen Zufall, wenn ausgerechnet die 
Speicherallokation, die die Exception auslöst, auch das Memory Leak 
wäre.

Nein, die einzig vernünftige Möglichkeit (weil ohne Rumstochern) ist 
tatsächlich ein Memory-Profiler. Den muss man ja nich gleich kaufen. 
I.d.R. bieten die Hersteller eine 30-Tage-Testlizenz zum Ausprobieren. 
Wir verwenden z.B. diesen hier: http://memprofiler.com/ . Mit dem 
Redgate Profiler hatten wir bei großen Systemen leider massive Probleme.

Grüße
Markus
Gast #3399160
Lesenswert?

ich bin da ganz bei bb.
Wenn Bilder benutzt werden, die ja dann logischerweise im Canvas 
gepinselt werden muss man das Teil mit Dispose per Hand wieder 
wegmachen; da hilft einem der GC nicht weiter.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren