Fragmentierung Mem



  • Hallo,

    mein Problem ist es, das ich nach erheblichen Speicherallokierungen
    und deren spätere Freigabe, diese nicht wieder erhalte mangels Speichermangel.

    Gibt es Hinweise für eine Lösung ?

    Danke
    Karsten



  • 64 Bit Prozess verwenden, mehr RAM reinstecken.

    Aber... bist du sicher dass du überhaupt alles korrekt freigibst?



  • Das Stichwort lautet "Memory Pool"



  • Softwaremaker schrieb:

    Das Stichwort lautet "Memory Pool"

    Ohne weitere Informationen eine etwas gewagte Aussage.


  • Mod

    Debug oder Release Version. Im Debug Heap gibt es eine verzögerte Speicherfreigabe...

    Ansonsten würde ich auch anzweifeln, dass der Speicher freigegeben wird.
    Bei "ähnlicher" Verwendung des Heaps habe ich selbst bei "Milliarden" von Allokationen in Services noch nie (seit XP und vergleichbaren Systemen) eine nennenswerte Erhöhung des Gesamtspeicherbedarfs oder eine Granulierung festgestellt.

    Ansonsten sind Memory Pools für map, list und Konsorten eine super geniale Geschichte. Ich habe dadurch Beschleunigungen bis zum Faktor 1000 erzielt... besonders wenn es anschließend um das zerstören der Objekte ging. In der Allokationsphase hat sich das kaum bemerkbar gemacht.



  • Ich konnte feststellen das ein free scheinbar verzögert freigibt. Ein direktes malloc schlug fehl ein zweiter versuch nicht, dies ergab sich im Zusammenhang mit OpenGL VBO's das sind Speicherböcke die mit der Grafikkarte ähnlich wie einst Memory DMA interagieren. Ein verändern der Freigabefolge scheint nun das Problem beseitigt zu haben.

    seltsam aber so steht es geschrieben ^^

    (Bisher konnten alle Mysterien ausgeschlossen werden, gibt es wirklich keine ?)

    Lebt es doch ?

    Gruß
    K aus B


Log in to reply