Я только что обнаружил, что когда UIwebview получает dealloc-ed, большая часть используемой памяти не полностью перерабатывается. После выполнения какого-то профиля я нашел большую часть оставшейся памяти - это кеш шрифта шрифта (проблема намного хуже, если вы открываете китайскую веб-страницу, так как у китайца больше символов, что означает больше глифа шрифта).Ошибка утечки памяти в шрифте Glyph/UIWebView
Есть ли способ управления кешем? Я работаю над веб-браузером iOS, эта проблема блокирует меня в течение 2 недель.
Attached - простая демонстрация для воспроизведения. 1) Запустите демо с памятью «Профиль распределения». 2) ввод http://www.163.com в адресной строке и ожидание завершения загрузки. 3) вы можете увидеть около 10 М памяти, потребляемой в инструменте. 4) нажмите кнопку очистки (UIwebview будет удалено из визуального дерева и будет переработано) 5) вы все еще можете видеть около 9M памяти.
BTW, NSURLCache был отключен с кодом ниже, чтобы отделить проблему. [[NSURLCache sharedURLCache] setMemoryCapacity: 1]
Я пытаюсь исследовать, как Mobile Safari справляется с этой проблемой. есть ли способ распечатать таблицу символов импорта с помощью otool? otool -ov напечатать все символы, определенные в этом приложении, но я хочу знать, какой символ это приложение связано с другой динамической библиотекой. Я использую class-dump-z для удаления всех файлов заголовков, но не получает никакой полезной информации. –
Реальная проблема заключается в draw_glyphs в CoreGraphics, после CGFontCreateGlyphBitmap, бит-карта получается кэшированной, и мы не можем контролировать кеш. это не утечка, но на iPad1 это действительно проблема для моего приложения (с большим текстом) –
Вы когда-нибудь находили ответ на этот вопрос? Я также пытаюсь избежать проблем с памятью шрифта UIWebView. –