Наш главный экран нашего приложения (и, следовательно, первый, который видят все пользователи) имеет несколько разделов, большинство из которых содержат различные веб-просмотры, которые пользователь может открыть. Это увеличивает объем использования памяти только с 26 МБ до 85 МБ или даже больше (после открытия всех различных веб-просмотров).
Проблема, которую мы обнаружили, заключается в том, что, как только они закрыты, все ресурсы веб-страниц, по-видимому, хранятся в памяти (используемая память едва уменьшает, возможно, несколько MB).
Я хотел бы освободить ресурсы, которые веб-браузер должен был открыть, потому что в дальнейшем есть очень требовательный раздел нашего приложения, которому требуется большая память и полностью сбой приложения, если вы случайно не просматриваете несколько этих веб-просмотров раньше.
Я нашел несколько вариантов в Интернете, но ни один из них не работал до сих пор. Такие вещи, как:
// Try to clean used webview
[self.webView loadHTMLString:@"" baseURL:nil];
[self.webView stopLoading];
self.webView.delegate = nil;
[self.webView removeFromSuperview];
self.webView = nil;
Они практически не влияют на использование памяти. Здесь что-то не хватает? Я уже дважды проверял, что у меня нет утечек, которые будут держать WebView открытым, я уже освобождаю только ссылку на него, что у меня есть (self.webView = nil;
)
Изменить: Я только что создал проект с нуля, добавил веб-просмотр и кнопку, которая загружает другую веб-страницу каждый раз, когда я нажимаю на нее, что, в свою очередь, увеличивает использование памяти. Я также добавил кнопку, которая уничтожит веб-просмотр при нажатии и, угадайте, что, память остается прежней, как будто она не освобождает ресурсы.