Domanda Perdite di UIWebView, JS Garbage Collector e WebCore VM


Ho creato una funzione browser per un'app che ovviamente funziona con UIWebView. Ho visto la memoria saltare quando si apre il browser che ha senso, tuttavia sto vedendo alcuni risultati inquietanti durante un profilo di perdite:

Leaks profiling

Il VM: JS Garbage Collector e VM: dati cancellabili WebCore continua a scalare più guardo. Cosa ancora peggiore è che quando il browser viene deallocato e viene rilasciata la vista Web, questi oggetti sono ancora lì, occupando fino a 6 MB di memoria.

Non sono sicuro di cosa dirò se non gestisco correttamente UIWebView, ma sembra esserci un problema con la memoria su cui si è tenuto dopo che UIWebView è stato deallocato.

Eseguo una pulizia prima che il browser venga deallocato come distaccato in questo post http://www.codercowboy.com/code-uiwebview-memory-leak-prevention/ ma questo non sembra fare alcuna differenza.

Qualcuno ha avuto questo problema? Qualsiasi intuizione sarebbe fantastica. Ho già visto alcune domande relative ai problemi di memoria di UIWebView, ma non specificano in modo specifico i risultati di un profilo.


21
2017-11-27 05:16


origine


risposte:


Non sono sicuro se considererei immediatamente questo problema. Queste macchine virtuali si avviano solo quando aggiungi una visualizzazione Web alla tua gerarchia di viste e carichi una richiesta con essa.

Potrebbe essere solo il sistema operativo che mantiene attive tali risorse nel caso in cui vengano utilizzate nuovamente.

Ho provato a replicare il codice che pulisce i dati e ha registrato un calo del 50%.

Il JS Garbage Collector era sempre di circa 3MB minimo, ma aveva un massimo di 8 MB I dati cancellabili di WebCore erano sempre a circa 700 KB

Si può anche considerare che questo potrebbe essere correlato a un cattivo JavaScript che continua a vivere a causa di perdite nel codice JavaScript.


1
2017-12-15 12:36