Wir sehen einen seltsamen Absturz, bei dem es so aussieht, als würde iOS unsere App zusammen mit mediaserverd abwerfen, nachdem eine Speicherwarnung der Ebene 2 empfangen wurde. Es tritt beim Streamen von DRM-Inhalten (einschließlich, aber nicht beschränkt auf PlayReady-verschlüsselte Inhalte) in etwa 7-8 Minuten nach der Wiedergabe auf - auch wenn wir das Gerät neu gestartet haben, ohne dass andere Anwendungen im Hintergrund ausgeführt wurden. Dies ist jedoch nicht immer der Fall und wir können manchmal den gleichen Inhalt (einen ganzen 2-Stunden-Film) mit zahlreichen speicherintensiven Anwendungen im Hintergrund ohne Probleme fertigstellen.
Wir sehen dies auf iPhone 3GS, 4 und 4S Geräten mit iOS 5.1 und 5.1.1, obwohl es auf einem 3GS am auffälligsten zu sein scheint. Die App wird entweder mit "segmentation fault 11" oder "signal 9" beendet. Segmentierungsfehler 11 kann sich auf schlechten Speicherzugriff oder niedrigen Speicher beziehen, und Signal 9 bezieht sich auf niedrigen Speicherabschluss.
Wir haben sowohl den statischen Analysator als auch die Instrumente verwendet, um Lecks zu finden und zu beheben, und nichts alarmierendes zeigt sich im Leaks-Instrument.
Wenn wir die Wiedergabe mit dem Memory Monitor-Instrument analysieren, sehen wir einen dramatischen Rückgang des verfügbaren physischen Speichers, wenn wir mit dem Streaming beginnen, was bis zu einem gewissen Grad zu erwarten ist. Wenn sich die Anwendung / das Betriebssystem normal verhält, werden andere Anwendungen aus dem Hintergrund entfernt, wenn der Speicher zu niedrig wird, aber gelegentlich wird der verfügbare physische Speicher einfach weiter fallen, bis das Betriebssystem unsere App zum Absturz bringt. Es werden keine Absturzprotokolle erstellt, obwohl wir gelegentlich Protokolle mit geringem Arbeitsspeicher wie dem folgenden erhalten:
%Vor%Nach einigen älteren Fragen, die ich hier gesehen habe, scheint es, dass der mediaserverd in früheren Versionen von iOS ernste Probleme mit Speicherlecks hatte.
Könnte das mit dem Problem zusammenhängen?
Wie können wir verhindern, dass dies geschieht?
Irgendwelche Ideen, Theorien, Rückmeldungen oder ähnliche Probleme würden sehr geschätzt!
Dies ist nur eine blinde Vermutung, aber benutzen Sie nicht den AVPlayer von AVFoundation? Ich hatte ein Problem wie dieses, es stellte sich heraus, dass ich AVPlayer nicht korrekt veröffentlichte. Also habe ich für jeden Song einen neuen AVPlayer erstellt, der in Ordnung ist, wenn man den alten veröffentlicht, aber das habe ich nicht. Ich fand es heraus, indem ich einen Zuteilungstest in Instruments durchführte und sah, dass AVPlayers weiterlebten, nachdem sie veröffentlicht wurden.
Tags und Links memory-leaks iphone ios video-streaming drm