OutOfMemoryException bei 64 bit Prozess?



  • Hallo zusammen,

    ich habe eine .NET / WPF Anwendung, bei der, wenn ich automatisiert bestimmte Aufrufe (>1000) tätige, reproduzierbar eine OutOfMemoryException bekomme.
    Die Anwendung ist 64 bit (mit Process Explorer gecheckt). Virtueller Speicher steigt um ca. 500 MB an, was in dem Fall erwartet ist, da bestimmte Daten gecached werden. Dennoch ist ja noch massig addressiebarer Speicherbereich vorhanden. Fragmentierung kann es demnach eigentlich auch nicht sein.
    Physischer Speicher ist auch noch genug frei (sollte ja aber unerheblich sein).
    Mit dem VS Memory Profiler kann ich auch keine Leaks erkennen, die das erklären könnten.

    Hat jemand eine Idee, woher sowas kommen könnte?



  • Verwendest du dort Ressourcen, die du nicht wieder freigibst (per Dispose() bzw. using-Anweisung)?
    Dann gibt es irgendwann keine freien Handles mehr und das führt dann zu einer OutOfMemoryExeption(auch wenn es nicht der Hauptspeicher ist).

    Oder hast du dort native Zugriffe (z.B. per P/invoke)? Auch dort muß man aufpassen, nach Benutzung wieder alles korrekt freizugeben.

    Edit: Oder erzeugst du Objekte (z.B. Arrays), welche größer als 2GB sind? Dann mußt du in der "app.config" mittels

    <configuration>
      <runtime>
        <gcAllowVeryLargeObjects enabled="true" />
      </runtime>
    </configuration>
    

    dies erst freischalten (ab .NET 4.5), s.a. C# - Out of Memory Exception.



  • Danke für den Tipp, Handles ist gut möglich, das hatte ich noch gar nicht auf dem Schirm.


Log in to reply