Core Data braucht unglaublich viel Speicher

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

  • Aber 30 MB für ein paar Bilder die gerade aktuell in einer TableView angezeigt werden finde ich dann doch etwas viel. Wenn Du die Bilder in der TableViewCell anzeigst, dann solltest Du evtl. Thumbnails der Bilder erstellen und verwenden.

    Hast Du die Bilder zu einem Post direkt in der Entity des Posts gespeichert? Evtl. solltest Du diese in eine separate Entity auslagern, damit CoreData die Daten besser verwalten kann und somit nur bei Bedarf im Speicher hält.
  • MCDan schrieb:

    Aber 30 MB für ein paar Bilder die gerade aktuell in einer TableView angezeigt werden finde ich dann doch etwas viel. Wenn Du die Bilder in der TableViewCell anzeigst, dann solltest Du evtl. Thumbnails der Bilder erstellen und verwenden.

    Hast Du die Bilder zu einem Post direkt in der Entity des Posts gespeichert? Evtl. solltest Du diese in eine separate Entity auslagern, damit CoreData die Daten besser verwalten kann und somit nur bei Bedarf im Speicher hält.


    Die Bilder werden erst gar nicht mit CoreData gespeichert, ansonsten stürzt die App ziemlich zackig App. Das Problem ist, dass die Bilder nicht wirklich klein sind. Die Bilder können bis zu 10MB gross sein. Die meisten sind jedoch ein halbes MB.
  • junky94 schrieb:

    Die meisten sind jedoch ein halbes MB.
    Was wiederum bedeutet, dass du immer noch ein Speicherleck hast. Bei 0.5 MB/Bild und, ich sag mal, 100 kB für den Post müsstest du ja rund 60 Posts in der aktuellen Anzeige haben. Viel Spass beim lesen...selbst bei 27" :D
    Entweder hältst du zu viele Posts im Speicher oder irgendwas anderes ist immer noch bei die Faul ;)
    [self setSignature:null];
    [[self postCount] increment];
  • Also ich erstelle mir immer eine eigene Image Klasse, welches nur ein Thumbnail enthält und einen Filename oder eine URL des Originals. Beim ersten erstellen wird dann aus dem großen Bild ein Thumbnail erzeugt und gespeichert, so dass es beim nächsten mal schnell zur Verfügung steht. Damit arbeite ich dann in der ganzen App. Das große Bild wird dann nur auf explizite Anfrage hin geladen und zurück gegeben.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • macmoonshine schrieb:

    0,5MB für das komprimierte Bild? Ein komprimiertes JPG von 500kb kann so ca. 1000 x 1200 Pixel haben. Bei drei Farben à 8 Bit Tiefe sind das 1000 x 1200 x 3 = 3600.000 Byte also ca. 3,5MB. Bei 10 Bildern kann es da schon eng werden.
    Ich dachte er meint das ein Bild im RAM 0.5-10 MB groß sein kann...wenn das die JPEG-Dateigröße ist...das kann ja übel werden. Ich hab nen Bild vom Ground Zero, ist 14.5 MB groß auf der Festplatte...und braucht fast nen 400 MB um im RAM zu landen :(
    Hier sollte man auf jeden Fall was unternehmen wenn man nicht weiß wie groß das Bild im RAM sein wird. Entsprechend umformen ist sicher nicht verkehrt wie Thalias schon vorschlug.
    [self setSignature:null];
    [[self postCount] increment];
  • Das gilt so nicht generell. Fast alle Speicherformate für Bilder komprimieren die Bilddaten. Dadurch braucht die Datei selber weniger Speicher als das Bild eigentlich hat.

    Wenn das Bild angezeigt werden soll, dann benötigt man die Pixeldaten. Dafür muss man das Bild entpacken. Dadurch erhält man für jedes Pixel mindestens 3 meistens sogar 4 Bytes für RGB bzw RGBA. Somit hat ein 1024*768 Bild halt 1024*768*4 Bytes im Speicher.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Okay, ich habe heute noch einmal die Posts neu geladen und gemerkt, dass mein App heute bei 14 Posts knappe 14MB braucht. Somit nehm ich mal an, dass einige grosse Bilder im Speicher waren.
    Bis jetzt skaliert mein App die Bilder nur. (Ich nehme an, dass verkleinert den benötigten Speicher auch. Klärt mich auf, wenn ich falsch liege)
    Habt ihr sonst noch Tipps, wie ich grosse Bilder oder Bilder im generellen anpasse, damit sie nicht mehr so viel speicher benötigen? Ich will jedoch keine Thumbnails brauchen, so lange das möglich ist.