Core Data: Speicher nach Löschen von Entitäten freigeben

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Core Data: Speicher nach Löschen von Entitäten freigeben

    Hallo Leute,

    ich habe mal eine Frage zum Memory Managment mit Core Data.
    Ich habe das Problem, dass der Speicherverbrauch bei mir bei Erzeugung von Entitäten beliebig anwachsen kann, beim Löschen aber nicht mehr kleiner wird. Das beobachte ich im Activity Monitor (mit Instruments komme ich noch nicht so gut klar).

    Und zwar habe ich eine Masteransicht mit NSOutlineView und NSTreeController (Entität Playlist) und eine Detailansicht mit NSTableview und NSArrayController, an die Selektion des TreeControllers gebunden (To-Many Relationship zur Entität Song).

    Wenn ich 'add:' vom NSArrayController nutze, kriege ich neue Instanzen und der Speicher wächst, mit 'remove:' verschwinden die Instanzen aus der Tabelle, werden zu Faults und werden auch nicht gespeichert, aber der Speicherverbrauch wird trotzdem nicht kleiner. Ich habe auch versucht, die Instanzen in eigener Methode mit 'delete:' vom NSManagedObjectContext zu entfernen oder zwischendurch mal zu speichern. Aber erst bei Neustart des Programms ist der Verbrauch wieder gering.

    Gibt es da einen anderen Weg, den Speicherverbrauch nach Löschen von Entitäten mit Core Data zu verringern? Der Dokumentation habe ich entnommen, dass Core Data in Sachen Objektlebenszyklus das meiste übernimmt. Zum Vergleich habe ich mal beliebig viele NSObjects erzeugt und auf Knopfdruck wieder released: Hierbei steigt und fällt der Speicherverbrauch wie gewünscht. Oder ist soll das so sein?

    Ich danke für jede Hilfe.