Утечка памяти в Font Glyph / UIWebView - PullRequest
8 голосов
/ 23 февраля 2012

Я только что обнаружил, что когда UIwebview освобождается, большая часть используемой памяти не полностью перерабатывается. Пройдя некоторый профиль, я обнаружил, что большая часть все еще живой памяти - это кэш глифов шрифтов (проблема гораздо хуже, если вы открываете китайскую веб-страницу, так как в китайском есть больше символов, что означает больше шрифтов).

Есть ли способ контролировать кэш? Я работаю над браузером iOS, эта проблема блокирует меня на 2 недели.

В приложении - это простая демонстрационная программа. 1) Запустите демоверсию с памятью «Профиль распределения». 2) введите http://www.163.com в адресную строку и дождитесь окончания загрузки. 3) вы можете увидеть около 10M памяти, потребляемой инструментом. 4) нажмите кнопку очистки (UIwebview будет удален из визуального дерева и будет переработан) 5) Вы все еще можете видеть живую память около 9 МБ.

Кстати, NSURLCache был отключен с кодом ниже, чтобы отделить проблему. [[NSURLCache sharedURLCache] setMemoryCapacity: 1]

1 Ответ

0 голосов
/ 16 декабря 2013

Мы наблюдали похожие проблемы в нашем производственном приложении. Я создал сокращение ошибки, когда я неоднократно очищаю веб-представление (загрузить «»), а затем загружаю следующий URL в UIWebView:

http://typecast.com/preview/google/Mr%20Bedfort/Sigmar%20One/Miss%20Fajardose

Это надежно завершает работу приложения после примерно 180 загрузок. Я отправил в Apple отчет об ошибке в качестве идентификатора проблемы 15659596, и я жду ответа.

Однако мне до сих пор неясно, в каких ситуациях это происходит, а когда - нет. Очевидно, что это происходит для этого URL, но я также протестировал ту же процедуру с:

  1. Тот же веб-контент, который обнаружил проблему в дикой природе в нашем приложении
  2. Поиск картинок Google для таких терминов, как "кошка" и "собака".

В обоих этих случаях проблема не появляется. Я не наблюдаю долгосрочного роста использования памяти, и приложение не падает.

Так что у меня нет ответа для вас, но я могу подтвердить, что проблема существует с UIWebView, что я сообщил об этом Apple и что она, по-видимому, связана с веб-шрифтами.

...