PhoneGap mit viel mehr Speicher in iOS8 als iOS7

Ich habe eine PhoneGap-App. Ein HTML5 Canvas-Spiel. Es scheint deutlich mehr Speicher in iOS 8 (einschließlich 8.0.2) zu verwenden als in iOS 7.

Der JS Garbage Collector beansprucht nicht nur mehr Speicher, sondern gibt auch anscheinend nie mehr Speicherplatz frei. Es sammelt "freigegebenen" Speicher korrekt, gibt ihn jedoch nie wieder für iOS frei.

Hier ist die Speichernutzung mit Instruments Allocations unter iOS 7 mit einem iPhone 5S. Wie Sie sehen können, geht es rauf und runter, während ich ein Level lade und entlade. Auch die Speichernutzung ist mit 23 MB sehr gering und liegt bei 41,81 MB

Here ist dieselbe App, die auf einem iPhone 5S mit iOS 8.0.2 ausgeführt wird. Wie Sie sehen, nimmt die Speichernutzung nie ab und es wird deutlich mehr Speicher benötigt. Tatsächlich steigt der Speicherverbrauch für immer, wenn ich das gleiche Level lade und entlade. Es steigt nicht so hoch an, was mich glauben lässt, dass JS den Speicher des Garbage Collector korrekt wiederverwendet, aber der GC scheint nie den Speicher freizugeben, den er für das Betriebssystem zurückhält. Auch die gesamte App scheint deutlich mehr Speicher zu verbrauchen als bisher.

Die App läuft auch viel langsamer und hat 121 MB erreicht, als ich sie gestoppt habe.

Ich sollte hinzufügen, dass ich beim Entladen des Levels die Seite neu lade, was unter iOS 8 merkwürdigerweise keinen Speicherplatz mehr freisetzt.

Hat jemand eine Idee, was dieses Problem verursachen könnte und wie es gelöst werden könnte? Ist das ein Fehler in iOS 8?

n 8.0 (aber nicht 8.1) konnte man mit einem Workaround / Hack frei machen: Aufruf vonwindow.location.reload(true); vor dem Erzwingen eines Seitenneuladens mitwindow.location.href =. Seit 8.1 funktioniert dieser Hack / Workaround nicht mehr.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage