Ich habe eine scheinbar harmlose Änderung an meiner iOS-App vorgenommen, und die App stürzt ab, weil der Speicherverbrauch ständig ansteigt, während die App läuft, bis sie abstürzt. Dies ist vielleicht eine 10-fache Erhöhung des Speicherverbrauchs.Wie finde ich heraus, welche Klasse am meisten Speicherplatz benötigt?
Wie finde ich heraus, welche Klasse oder Struktur dafür verantwortlich ist? Ich bin auf der Suche nach so etwas wie:
CVPixelBuffer: 800MB CMSampleBuffer: 100MB CIImage: 50MB
ich in beide Xcode Speicher-Debugger geschaut und Instrumenten, aber nichts gefunden.
Haben Sie versucht, irgendein Speicherleck in der App zu finden? –
Vielleicht haben Sie einen Speicher-Typ als eine lokale Variable eingeführt, wahrscheinlich würden Kandidaten Strukturen und wahnsinnig große C-Arrays sein, die theoretisch Ihren Stack-Platz erschöpfen könnten. Wahrscheinlich ist es eine enge Schleife, die etwas auf den Haufen wirft. Haben Sie keine Änderungshistorie, um die Änderung einzuschränken, die das Problem verursacht? –
@ Kamil.S Ich weiß, was zu tun, und es ist noch nicht einmal Git verpflichtet. Es geht nicht um Stack-Speicherplatz, da ich keine tiefe Rekursion habe. Indem ich den neuen Code mühsam auskommentierte und Zeile für Zeile auskommentierte, stellte ich fest, dass das Problem in https://developer.apple.com/documentation/coreimage/cifilter/2138288-init ist. Wenn ich einen CIFilter erstelle und ihn wegwerfe, es leert Speicher, was nicht passieren sollte. Aber gibt uns Xcode oder Instruments einen besseren Weg, nämlich alle Klassen nach Speicher zu sortieren (kumulativ nach allen Instanzen dieser Klasse)? –