Ho appena scoperto che quando UIwebview viene deallocato, la maggior parte della memoria utilizzata non viene completamente riciclata. Dopo aver fatto un po 'di profilo, ho scoperto che la maggior parte della memoria ancora viva è la cache del glifo dei font (il problema è molto peggiore se si apre una pagina web cinese, dato che il cinese ha più caratteri, che significa più glifi dei font).Perdita di memoria in Font Glyph/UIWebView
C'è un modo per controllare la cache? Sto lavorando su un browser web iOS, questo problema mi blocca per 2 settimane.
Attached è una semplice demo di riproduzione. 1) Eseguire la demo con la memoria "Profilo di assegnazione". 2) immettere http://www.163.com nella barra degli indirizzi e attendere il completamento del caricamento. 3) è possibile vedere circa 10M di memoria consumata nello strumento strumento. 4) fare clic sul pulsante Cancella (l'UIwebview verrà rimosso dall'albero visivo e riciclato) 5) è ancora possibile vedere in memoria circa 9 M di memoria.
BTW, NSURLCache è stato disabilitato con il codice riportato di seguito, per separare il problema. [[NSURLCache sharedURLCache] setMemoryCapacity: 1]
Sto cercando di indagare su come Safari Safari si occupa di questo problema. c'è un modo in cui posso stampare la tabella dei simboli di importazione con otool? otool -ov stampa tutti i simboli definiti in questa applicazione, ma voglio sapere quale simbolo questa app è collegata ad altre librerie dinamiche. Io uso class-dump-z per scaricare tutti i file di intestazione, ma non ho alcuna informazione utile. –
Il vero problema è in draw_glyphs in CoreGraphics, dopo CGFontCreateGlyphBitmap, la mappa dei bit viene memorizzata nella cache e in nessun modo possiamo controllare la cache. non è una perdita ma su iPad1 è davvero un problema per la mia applicazione (con molto testo) –
Hai mai trovato la risposta a questo? Sto anche cercando di evitare problemi con la memoria dei font di UIWebView. –