Ich habe Speicherprobleme mit einer meiner Apps, und ich habe "Real Memory" wie in Instruments> Activity Monitor definiert als möglichen Täter identifiziert.iPad iOS Speicherverwaltung - wie man "Real Memory" freigibt, das von UIImageViews, UIScrollViews verwendet wird?
Meine App reserviert große UIImages innerhalb UIScrollViews. Auf eines der Bilder wird ein CImageFilter angewendet. Der Aktivitätsmonitor zeigt, dass beim ersten Drücken des View-Controllers, der Scrollviews mit großen Bildern enthält, die tatsächliche Speicherbelegung auf etwa 300 MB springt. Nachfolgende Schübe/Pops heben es auf etwa 500 mb:
ich gelesen, dass „Live-Bytes“ keinen Speicher von Texturen und CALayers verwendet zählen, so meine Frage ist: Wie löse ich richtig Speicher, der durch CALayers der verwendet wird, mein Bild/Scrollviews?
Siehe die realen Speichernutzung blau Kreisdiagramm auf der rechten Seite:
realen und virtuellen Speicher sind die höchsten für diesen Prozess:
Was mich stört ist, dass ich versuche, meine großen scrollviews und Bilder aufzuräumen, wenn ich diesen Controller knacke, und die Zahlen für die "Live Bytes" gehen auf ungefähr 5 MB herunter, während "Real Memory "Bleibt unverschämt hoch (~ 500 MB):
ContainerScrollView* container = ...;
[container.view removeFromSuperview];
container.view = nil;
Hier ist die Zuteilungen Profilierung:
Wenn Sie bei jedem Test eine neue Scrollview instanziieren, führen Sie dann die gleichen Bilder ein? –
Haben Sie versucht, eine Speicherwarnung auszulösen, um sicherzustellen, dass System-Caches als Reaktion darauf reagieren und (hoffentlich) nicht verwendete Daten löschen? Denken Sie daran, dass 'imageNamed' einen Cache verwendet. – jhabbott
Speicherwarnungen werden ausgelöst. Scrollviews erhalten Bilder von der Fotobibliothek, die der Benutzer auswählt. –