C# 3.5 WPF Memory Leaks

Hallo,

an die ungläubigen, ja es gibt auch in c# memory leaks, auch wenn man auf native code verzichtet und nur managed code verwendet.

ich sitze schon seit über einem monat an dem problem, mit teilweisen aber sehr geringen erfolgen.

Einführung:
seit letzten frühling versuche ich mit meinem team eine ~20 jährige TFM anwendung in .net 3.5 mit wpf in c# neu zu entwickeln
Unter anderem verwenden wir VS 2008 haben auch schon das SP1 installiert und für grids verwenden wir das Xceed Grid für WPF
Unsere Aplikation ist in viele verschiedene untermodule unterteilt und jedes wird in einem neuen Tab geöffnet.

Problem(e):

  1. lässt man die anwendung über nacht, oder noch länger, laufen, wird sie systematisch größer und sprengt irgendwann den ram (beim letzten versuch ist es auf über 600MB angestiegen, bei 60MB anfangsgröße), komischerweise ist dieses problem schon sehr lange nicht aufgetreten und ich habe eigentlich gedacht dass es sich von alleine gelöst hätte, ich glaube es hat estwas mit dem refresh von wpf zu tun, da wir links unten in unserer anwendung eine uhr anzeigen, welche sich ja jede sekunde ändert und der verbraucht ram auch ungefähr jede sekunde um 4-20KB zunimmt.
    zuerst habe ich gedacht das xceed grid sei schuld aber dann sind auch anwendungen gewachsen, wo das grid nicht gestartet wurde, und umgekehrt sind anwendungen mit ättlichen grids nicht gewachsen, wenn man die anwendung aber als solche ohne tabs startet, bleibt sie konstatn bei den 60MB auch über nach ändert sich da nichts

  2. nach dem schließen eines tabs wird er nicht im ram freigegeben und ich habe keine ahnung mehr wo ich noch nach handlern suchen könnte, ich habe den clr profiler verwendet, der allerdings zu viele daten liefert und die sehr durcheinander sind, und habe ich dann ein paar handler weggenommen bzw auf null gesetzt, hat sich nichts geändert an den messungen des profilers => die handler die ich weggenommen habe sind auch von alleine aufgelöst worden
    gibt es eine möglichkeit zur laufzeit nachzufragen wer alles einen handler auf ein objekt hält?, was dem GC dadurch verbietet das objekt zu löschen

  3. dazu habe ich ledeglich den bug eintrag bei MS gefunden aber die hat es offenbar nicht interessiert dass sich ~20 leute beschwert haben:
    seit SP1 gibt es eine sehr einfache möglichkeit einen splashscreen zu erstellen, wenn man aber, daweil der splashscreen angezeigt wird wild durch die tabs herum wechselt, kommt es zeitweise zu einem fehler von .net und zwar steht beim stacktrace sogar etwas mit native methods => hat sicher nichts mit unserer anwendung zu tun, es ist ein .net 3.5 sp1 bug um den sich MS nicht kümmern will weiß jemand vielleicht ein workaround dafür? der bug kommt nicht immer, und ist eigentlich bei uns nicht reproduzierbar da er nur kommt wenn man mit ihm nicht rechnet :smile:

wenn jemand etwas zumindest zu einem von den 3 fehler weiß und mir mitteilen würde, wär ich sehr sehr dankbar

mit freundlichen grüßen
Peter