iOS7 UIWebView Speicherleck

9

Wir haben eine umfassende iOS-App mit Hybrid-Modus - ein UIWebView hält den größten Teil der Web-Anwendung in JS. Es funktioniert gut auf iOS6, aber vor kurzem haben wir ernsthaften Speichermangel auf allen iOS7-Geräten gefunden - iPad, iPhone 4 / 4S und iPhone 5 / 5C / 5S. Wir haben eine Analyse des Speicherverbrauchs sowohl auf iOS6 als auch auf iOS 7 im iOS-Simulator durchgeführt. Durch die gleiche Interaktion in der App beträgt der Speicherverbrauch des WebView in iOS6 immer weniger als 200MB, während er auf iOS7 mehr als 800MB betragen kann!

Wir vermuten, dass es im WebView auf iOS7 ein ernsthaftes Speicherverwaltungsproblem gibt. Aber das Tool zum Profilieren des JS in der WebView fehlt, wir können die Ursache nicht finden. Hier würden wir gerne fragen, ob jemand ähnliche Probleme hat, und jedes Tool / jeder Ansatz kann helfen, den UIWebView Einblick in das genaue Problem zu verschaffen. Danke.

    
macapapa 02.11.2013, 04:11
quelle

2 Antworten

1

Ich habe nicht genug Reputation, um sie zu verbessern oder zu kommentieren. Ich denke, eine "Antwort" ist der einzige Weg, zu dem ich beitragen kann.

Ich stimme Ming Zhus Beitrag zu. Ich habe festgestellt, dass bei 5-stelligen Tasten (9999 & lt; Taste & lt; = 99999) die Speicherbelegung auf iOS 7 explodiert.

Im Folgenden finden Sie den Beispielcode, mit dem ich versucht habe, zu reproduzieren, was meine App zum Absturz gebracht hat.

%Vor%

Ich habe auch einen Fehler an Apple gesendet, bevor ich diesen stackoverflow gefunden habe, aber es sieht so aus, als sei das eine gute Sache.

    
dailynerd 04.03.2014 03:47
quelle
0

Sowohl der UIWebView als auch der native Safari-Browser mit iOS7 scheint ein Problem bei der Speicherverwaltung beim Umgang mit dem json-Objekt zu haben. Wenn Sie ein Wörterbuch mit einer tief verschachtelten Struktur haben und wenn einer der Schlüssel eine numerische Zeichenfolge ist und kleiner als 99999 ist, haben Sie möglicherweise häufig Speicherwarnungen erhalten.

etwas wie

%Vor%

Die Arbeit ist einfach, versuchen Sie, den Schlüssel " 98304 " wie " ID98304 " zu ersetzen. Ich hoffe, Sie haben das Problem bereits in Angriff genommen. :)

    
Ming Zhu 14.11.2013 21:53
quelle