ich habe eine Anwendung, die in mehreren Threads massenweise kurzlebige Objekte erstellt. Nun ist es so, das der Speicherbedarf (laut Taskmanager) kontinuierlich anwächst. Probeweises einfügen von Finalizern in den Klassen zeigen, das die Objekte alle finalisiert werden und somit wohl auch vom GC entfernt werden müssten, oder?
Gibt es ein Tool oder eine Herangehensweise mit dem/der man die Ursache für solche Probleme eingrenzen kann?
Um Memory-Leaks ausfindig zu machen eignen sich hervorragend Profiler. Mit denen kannst du dein Programmverhalten sozusagen live aufnehmen, und danach anschauen und auswerten. Du kannst sehen wiviele Objekte von welchen Typ erstellt worden sind, oder, und das ist jetzt wichtig, welche Objekte noch eine Referenz auf das zu löschende Objekt haben. Das ist einer der Hauptgründe, warum es nicht gelöscht wird. Dazu kannst du auch noch auf Geschwindigkeit optimieren.
Oder aber den EQATEC Profiler. Der ist übrigens der einzige der auch Windows Mobile (.NET Compact Framework) und Windows Phone 7 (Silverlight bzw. XNA) Profile kann.