Tool um Speicherverbrauch zu ermitteln



  • Womit mache ich das am besten. Es geht darum das der Speicherbedarf meiner Anwendung bei bestimmten Aktionen höher wird ohne das dies erwartet ist. (Um genau zu sein, möchte ich dort speicher frei geben und lösche unbenötigte Objekte). Wie schon gesagt, geht dort der Speicherverbrauch mit jeden versuch immer höher. Jetzt brauche ich ein Tool um irgendwie herauszufinden welches Objekt den Speicher für sich beansprucht. Im normalen Debugger hab ich das Problem noch nicht gefunden. Was könnte ich also noch versuchen?



  • Wie löschst du Objekte? Bedenke das der GC ein Objekt erst aufräumen kann wenn alle Referenzen darauf weg sind, dh auch alle Event handler etc.



  • Es gibt einige gute .NET Memory Profiler, z.B. http://memprofiler.com/ (auch als Testversion...)


  • Administrator

    Darf ich zuerst mal fragen, wie du den Speicherverbrauch deiner Anwendung ermittelt hast ohne Speicherverbrauch-Tool? 🙂
    Es geht mir nur darum, dass du dazu hoffentlich nicht den Taskmanager benutzt hast 😉

    Grüssli



  • Fedaykin schrieb:

    Jetzt brauche ich ein Tool um irgendwie herauszufinden welches Objekt den Speicher für sich beansprucht.

    potenzielle Kandidaten sind Objekte die IDisposabel implementieren ... in Dispose wird dann noch ungemanagter Kram aufgeräum ... wenn Du das Objekt nicht mehr brauchst, dann musst Du Dispose an dem Objekt aufrufen ... ich weis jetzt nicht ob der GC dennoch das Objekt aufräumt ... falls ja, hast Du ohne Dispose noch immer die ungemanagten Resourcen im Programm - auf die Du nicht mehr zugreifen kannst

    Image ist solch ein Kandidat



  • CSL schrieb:

    Wie löschst du Objekte? Bedenke das der GC ein Objekt erst aufräumen kann wenn alle Referenzen darauf weg sind, dh auch alle Event handler etc.

    Das war das Problem, mein Eventhandling war noch nicht abgemeldet. Musste nun doch einmal durch alle zu löschenden Objekte rennen um genau dies zu machen.

    Dravere schrieb:

    Darf ich zuerst mal fragen, wie du den Speicherverbrauch deiner Anwendung ermittelt hast ohne Speicherverbrauch-Tool? 🙂
    Es geht mir nur darum, dass du dazu hoffentlich nicht den Taskmanager benutzt hast 😉

    Grüssli

    Naja das hab ich mit GC.GetMemoryUsage gemacht. bringt zumindest nen halbwegs brauchbaren Wert.

    Besten dank euch allen.


Anmelden zum Antworten