Ho un'app PhoneGap. Un gioco Canvas HTML5. Sembra utilizzare molta più memoria in iOS 8 (compreso 8.0.2) vs iOS 7.PhoneGap che utilizza più memoria in iOS8 che in iOS7
Oltre a utilizzare più memoria, il JS Garbage Collector non sembra mai liberare la memoria che contiene. Raccoglie correttamente la memoria "liberata", ma non la rilascia mai indietro per iOS.
Ecco l'utilizzo della memoria utilizzando Allocazioni strumenti in iOS 7 con un iPhone 5S. Come puoi vedere, va su e giù mentre carico e scarica un livello. Anche l'utilizzo della memoria è molto bassa, intorno ai 23 MB, maxing a 41.81mb
qui è la stessa applicazione in esecuzione su un iPhone 5S con iOS 8.0.2. Come puoi vedere, l'utilizzo della memoria non diminuisce mai e utilizza molta più memoria. In realtà l'utilizzo della memoria continua a salire per sempre mentre carico e scarica lo stesso livello. Non sale più in alto, il che mi fa pensare che JS sta riutilizzando correttamente la memoria dal Garbage Collector, ma il GC non sembra mai liberare la memoria che sta trattenendo sul sistema operativo. Anche l'intera app sembra utilizzare più memoria di prima.
L'app è anche molto più lenta e ha raggiunto 121mb quando l'ho interrotta.
devo aggiungere che, quando lo scarico del livello ho ri-caricare la pagina, che curiosamente non liberare alcuna memoria sotto iOS 8.
Qualcuno ha qualche idea che cosa potrebbe causare questo problema e quale potrebbe essere la soluzione? Si tratta di un bug in iOS 8?
In 8.0 (ma non in 8.1) è possibile liberare utilizzando una soluzione alternativa: chiamare window.location.reload(true);
prima di forzare una pagina di ricaricamento utilizzando window.location.href =
. Da 8.1 questo hack/workaround non funziona.
Può essere correlato (o uguale) a questo problema: https://issues.apache.org/jira/browse/CB-8002 Se è possibile, si prega di check it out e farci sapere se quello potrebbe essere lo stesso problema. Se è così, penso che ci sia una versione patch disponibile (vedi le note nel ticket di jira). – sandstrom